Mysql
 sql >> база данни >  >> RDS >> Mysql

Изчислете процента спрямо предходния месец (същата година)

Можете да оставите да присъедините заявката към самата нея върху номера на месеца минус 1. Тогава сте имали сбора от месеца и последния месец в един ред и сте могли да изчислите процента. Подобно на следното:

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;

Забележка A и B като вашата заявка, току-що променена, така че месецът да е числов, тъй като това е необходимо в ON клауза.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Система за висок резултат от моята игра за iphone

  2. MYSQL, използвайки уникални имена на таблици VS с помощта на идентификатори

  3. Плаващата стойност, съхранявана в MySQL, продължава да се обърква

  4. Преобразувайте дата на mySQL в дата на Javascript

  5. защо това ляво присъединяване връща само един запис?