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

Cộng dồn giá trị số theo nhóm trong MySQL với GROUP BY

Để 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àmMô 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.