sql >> Databasteknik >  >> RDS >> Mysql

Beräkna procent på föregående månad (samma år)

Du kanske lämnade gå med i frågan för sig själv på månadens nummer minus 1. Då hade du summan av månaden och den sista månaden på en rad och kunde beräkna procentsatsen. Liknar följande:

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;

Notera A och B är din fråga, just modifierad så att månaden är numerisk eftersom detta behövs i ON klausul.




  1. php/mysql lägg ihop rader för att få totalt

  2. Hur beräknar man nästa födelsedag givet ett födelsedatum?

  3. Snabbaste sättet att överföra Excel-tabelldata till SQL 2008R2

  4. CodeIgniter:Hur man använder WHERE-klausulen och OR-satsen