Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Tổng cột theo tháng cụ thể trong MySQL với MONTH()

Tính tổng doanh thu theo tháng trong MySQL

Sử dụng hàm MONTH() để trích xuất tháng từ cột DATE, kết hợp SUM() và WHERE để tổng hợp theo tháng cụ thể.

1. Tạo bảng và chèn dữ liệu

mysql> CREATE TABLE DemoTable (
    Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    PurchaseDate DATE,
    SalePrice INT
);
mysql> INSERT INTO DemoTable (PurchaseDate, SalePrice) VALUES
    ('2018-01-10', 450), ('2019-12-25', 1000), ('2016-12-02', 5560),
    ('2015-02-20', 4550), ('2015-12-11', 4110);

2. Xem dữ liệu

mysql> SELECT * FROM DemoTable;
+----+--------------+-----------+
| Id | PurchaseDate | SalePrice |
+----+--------------+-----------+
| 1  | 2018-01-10   | 450       |
| 2  | 2019-12-25   | 1000      |
| 3  | 2016-12-02   | 5560      |
| 4  | 2015-02-20   | 4550      |
| 5  | 2015-12-11   | 4110      |
+----+--------------+-----------+

3. Truy vấn: Tổng SalePrice cho tháng 12 (tháng 12 = December)

mysql> SELECT SUM(SalePrice) FROM DemoTable
    WHERE MONTH(PurchaseDate) = 12;

4. Kết quả

+----------------+
| SUM(SalePrice) |
+----------------+
| 10670          |
+----------------+

Phân tích: 3 bản ghi tháng 12:

  • 2019-12-25: 1000
  • 2016-12-02: 5560
  • 2015-12-11: 4110
  • Tổng: 1000 + 5560 + 4110 = 10670

Mở rộng - Báo cáo theo năm và tháng:

SELECT YEAR(PurchaseDate) AS Year, MONTH(PurchaseDate) AS Month, SUM(SalePrice) AS Total
FROM DemoTable
GROUP BY YEAR(PurchaseDate), MONTH(PurchaseDate)
ORDER BY Year, Month;

Lưu ý hiệu năng: MONTH(col) = 12 không dùng index. Tốt hơn dùng range:

WHERE PurchaseDate >= '2019-12-01' AND PurchaseDate < '2020-01-01'