sql >> Databáze >  >> RDS >> Mysql

Vypočítat procento za předchozí měsíc (stejný rok)

Můžete si nechat připojit dotaz pro sebe na číslo měsíce mínus 1. Pak jste měli součet měsíce a posledního měsíce v jednom řádku a mohli vypočítat procento. Podobné následujícímu:

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;

Poznámka A a B protože jde o váš dotaz, pouze upraveno tak, aby byl měsíc číselný, protože je potřeba v ON doložka.




  1. Proč nemohu použít proměnné vazby v příkazech DDL/SCL v dynamickém SQL?

  2. Vyberte hodnoty ze seznamu, které nejsou v tabulce

  3. Dynamické maskování dat v SQL Server pro začátečníky

  4. Připravené příkazy PHP\MYSQL