Khi nhiều bản ghi cùng một ngày (cột DATE hoặc DATETIME), dùng GROUP BY trên cột ngày và SUM() để tính tổng giá trị tương ứng.
Cú pháp
SELECT cot_ngay, SUM(cot_so) AS tong_gia_tri FROM ten_bang GROUP BY cot_ngay;
Nếu cột là DATETIME, dùng GROUP BY DATE(cot_datetime).
Ví dụ minh họa
Tạo bảng mua hàng:
mysql> CREATE TABLE DemoTable1522 (
-> ProductPurchaseDate DATE,
-> NumberOfProduct INT
-> );
mysql> INSERT INTO DemoTable1522 VALUES
-> ('2019-01-21', 45), ('2018-12-31', 78), ('2019-01-21', 67),
-> ('2019-03-01', 56), ('2018-01-21', 97), ('2019-01-21', 47);
Truy vấn tổng số sản phẩm theo ngày:
mysql> SELECT ProductPurchaseDate, SUM(NumberOfProduct)
-> FROM DemoTable1522
-> GROUP BY ProductPurchaseDate;
Kết quả:
+---------------------+----------------------+ | ProductPurchaseDate | SUM(NumberOfProduct) | +---------------------+----------------------+ | 2019-01-21 | 159 | -- 45+67+47 | 2018-12-31 | 78 | | 2019-03-01 | 56 | | 2018-01-21 | 97 | +---------------------+----------------------+
Mở rộng
- Nhóm theo tháng:
GROUP BY YEAR(cot), MONTH(cot)hoặcGROUP BY DATE_FORMAT(cot, '%Y-%m'). - Nhóm theo tuần:
GROUP BY YEARWEEK(cot). - Thêm
HAVING SUM(...) > 100lọc nhóm. - Index trên
ProductPurchaseDatetăng tốc GROUP BY lớn.
⚠️ Cột DATETIME
Nếu cột là DATETIME (có giờ), GROUP BY cot sẽ tách từng giây. Phải dùng GROUP BY DATE(cot) để gom theo ngày.