Tổng hợp giá trị theo nhóm với SUM() và GROUP BY
Gom nhóm các bản ghi trùng lặp cột Name và tính tổng cột Value.
Tạo bảng và dữ liệu
mysql> create table DemoTable (
Name varchar(20),
Value int
);
Query OK, 0 rows affected (2.08 sec)
mysql> insert into DemoTable values('Chris',50);
mysql> insert into DemoTable values('David',90);
mysql> insert into DemoTable values('Chris',60);
mysql> insert into DemoTable values('Bob',100);
mysql> insert into DemoTable values('David',80);
Dữ liệu gốc
+-------+-------+ | Name | Value | +-------+-------+ | Chris | 50 | | David | 90 | | Chris | 60 | | Bob | 100 | | David | 80 | +-------+-------+
Truy vấn gom nhóm và tính tổng
mysql> select Name, sum(Value) as GrandTotal from DemoTable group by Name;
Kết quả
+-------+------------+ | Name | GrandTotal | +-------+------------+ | Chris | 110 | | David | 170 | | Bob | 100 | +-------+------------+
Giải thích:
- Chris: 50 + 60 = 110
- David: 90 + 80 = 170
- Bob: 100 (chỉ 1 bản ghi)
Mở rộng: Thêm COUNT(*) để biết số lần xuất hiện, AVG(Value) cho trung bình, MIN/MAX cho giá trị cực trị.
SELECT Name, COUNT(*) as SoLan, SUM(Value) as Tong, AVG(Value) as TB FROM DemoTable GROUP BY Name;