Để tính tổng các giá trị số (cộng dồn) cho mỗi nhóm giá trị duy nhất trên một cột, MySQL sử dụng mệnh đề GROUP BY kết hợp với hàm tập hợp SUM().
Ví dụ minh họa
Tạo bảng điểm sinh viên:
mysql> CREATE TABLE DemoTable1443 (
StudentId INT,
StudentScore INT
);
Chèn dữ liệu (StudentId 100 và 101 mỗi ID 2 bản ghi):
mysql> INSERT INTO DemoTable1443 VALUES (100, 78); mysql> INSERT INTO DemoTable1443 VALUES (101, 89); mysql> INSERT INTO DemoTable1443 VALUES (100, 88); mysql> INSERT INTO DemoTable1443 VALUES (101, 97);
Dữ liệu:
mysql> SELECT * FROM DemoTable1443;
+-----------+--------------+ | StudentId | StudentScore | +-----------+--------------+ | 100 | 78 | | 101 | 89 | | 100 | 88 | | 101 | 97 | +-----------+--------------+
Cộng dồn điểm theo StudentId
mysql> SELECT StudentId, SUM(StudentScore)
FROM DemoTable1443
GROUP BY StudentId;
Kết quả:
+-----------+-------------------+ | StudentId | sum(StudentScore) | +-----------+-------------------+ | 100 | 166 | | 101 | 186 | +-----------+-------------------+
Giải thích
GROUP BY StudentId: Gom các hàng có cùng StudentId thành một nhóm.SUM(StudentScore): Tính tổng điểm trong mỗi nhóm.- Kết quả trả về một hàng cho mỗi StudentId duy nhất.
Các hàm tập hợp thường dùng với GROUP BY
| Hàm | Mô tả |
|---|---|
SUM() | Tổng cộng |
COUNT() | Số lượng hàng |
AVG() | Trung bình cộng |
MIN() / MAX() | Giá trị nhỏ nhất / lớn nhất |
GROUP_CONCAT() | Nối các giá trị thành chuỗi |
Mở rộng: Nhiều cột GROUP BY
SELECT Department, Year, SUM(Salary) FROM Employees GROUP BY Department, Year;
Tạo tổng lương theo phòng ban VÀ năm.