Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Tính phần trăm vào tháng trước (cùng năm)

Bạn có thể để kết hợp truy vấn với chính nó trên số của tháng trừ đi 1. Sau đó, bạn có tổng của tháng một tháng trước trong một hàng và có thể tính toán phần trăm. Tương tự như sau:

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;

Lưu ý AB là truy vấn của bạn, chỉ được sửa đổi để tháng có dạng số vì điều này là cần thiết trong ON mệnh đề.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Nhận top-k của mỗi nhóm trong MySQL

  2. dữ liệu mysql ngẫu nhiên php

  3. Cách tốt nhất để chèn nhiều hàng trong PHP PDO MYSQL là gì?

  4. Làm cách nào để kết xuất tệp MySQL mà không có Khóa ngoại qua dòng lệnh?

  5. Làm thế nào để chèn các ký tự đặc biệt vào cơ sở dữ liệu?