sql >> Database >  >> RDS >> Mysql

Bereken percentage over vorige maand (zelfde jaar)

Je zou de vraag naar zichzelf kunnen laten samenvoegen op het nummer van de maand min 1. Dan had je de som van de maand en de laatste maand op één rij en kon je het percentage berekenen. Lijkt op het volgende:

SELECT monthname(concat('1970-', lpad(A.MONTH, 2, '0'), '-01')) AS MONTH,
       A.SALE_PRICE,
       CASE
         WHEN A.SALE_PRICE IS NULL
           THEN NULL
         WHEN B.SALE_PRICE IS NULL
           THEN NULL
         WHEN A.SALE_PRICE = 0
           THEN NULL
         ELSE
           (B.SALE_PRICE / A.SALE_PRICE - 1) * 100
       END AS PERCENTAGE
       FROM (SELECT month(DATE_PURCHASED) AS MONTH,
                    sum(SALE_PRICE) AS SALE_PRICE,
                    FROM SALE
                    WHERE year(DATE_PURCHASED) = 2017
                    GROUP BY MONTH) A
            LEFT JOIN (SELECT month(DATE_PURCHASED) AS MONTH,
                              sum(SALE_PRICE) AS SALE_PRICE,
                              FROM SALE
                              WHERE year(DATE_PURCHASED) = 2017
                              GROUP BY MONTH) B
                      ON A.MONTH - 1 = B.MONTH
       ORDER BY A.MONTH;

Opmerking A en B dat is uw vraag, zojuist gewijzigd zodat de maand numeriek is, omdat dit nodig is in de ON clausule.




  1. Veel-op-veel relatie INSERT

  2. Selecteer alle projecten die overeenkomende tags hebben

  3. Zijn PostgreSQL-functies transactioneel?

  4. Hoe maak je een primaire sleutel in SQL