Giới thiệu
Sử dụng hàm tổng hợp SUM() kết hợp GROUP BY để cộng dồn giá trị Price cho mỗi nhóm Id trùng lặp.
Ví dụ thực hành
1. Tạo bảng DemoTable850
mysql> CREATE TABLE DemoTable850 (Id INT, Price INT);
2. Chèn dữ liệu (Id=1 xuất hiện 3 lần, Id=2 xuất hiện 2 lần)
mysql> INSERT INTO DemoTable850 VALUES (1,90),(2,100),(2,50),(1,80),(1,60);
3. Tổng Price cho Id = 1
mysql> SELECT Id, SUM(Price) FROM DemoTable850 WHERE Id = 1;
4. Kết quả
+------+------------+
| Id | SUM(Price) |
+------+------------+
| 1 | 230 |
+------+------------+
Mở rộng: Tổng cho TẤT CẢ Id (GROUP BY)
mysql> SELECT Id, SUM(Price) AS TotalPrice FROM DemoTable850 GROUP BY Id;
+------+------------+
| Id | TotalPrice |
+------+------------+
| 1 | 230 |
| 2 | 150 |
+------+------------+
Các hàm tổng hợp thường dùng với GROUP BY
| Hàm | Ý nghĩa |
|---|---|
SUM(col) | Tổng |
AVG(col) | Trung bình |
COUNT(*) | Số hàng |
COUNT(col) | Số giá trị không NULL |
MIN(col) | Giá trị nhỏ nhất |
MAX(col) | Giá trị lớn nhất |
GROUP_CONCAT(col) | Nối chuỗi |
Lưu ý
- Cột trong
SELECTphải nằm trongGROUP BYhoặc là hàm tổng hợp (trừ MySQL vớiONLY_FULL_GROUP_BYtắt). - Index trên
IdgiúpGROUP BY Idnhanh hơn. WHERE Id = 1lọc trước khi gom nhóm;HAVING SUM(Price) > 200lọc sau khi gom nhóm.