Sử dụng hàm tổng hợp SUM() cho từng cột trong một truy vấn đơn.
Tạo bảng
mysql> CREATE TABLE DemoTable (
-> Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> FirstValue INT, SecondValue INT, ThirdValue INT
-> );
Chèn dữ liệu (4 hàng, 3 cột số)
mysql> INSERT INTO DemoTable(FirstValue, SecondValue, ThirdValue) VALUES(10, 20, 30); mysql> INSERT INTO DemoTable(FirstValue, SecondValue, ThirdValue) VALUES(60, 50, 40); mysql> INSERT INTO DemoTable(FirstValue, SecondValue, ThirdValue) VALUES(80, 90, 100); mysql> INSERT INTO DemoTable(FirstValue, SecondValue, ThirdValue) VALUES(20, 10, 0);
Xem dữ liệu
mysql> SELECT * FROM DemoTable;
+----+------------+-------------+------------+ | Id | FirstValue | SecondValue | ThirdValue | +----+------------+-------------+------------+ | 1 | 10 | 20 | 30 | | 2 | 60 | 50 | 40 | | 3 | 80 | 90 | 100 | | 4 | 20 | 10 | 0 | +----+------------+-------------+------------+
Tổng từng cột
mysql> SELECT SUM(FirstValue), SUM(SecondValue), SUM(ThirdValue) FROM DemoTable;
+-----------------+------------------+-----------------+ | SUM(FirstValue) | SUM(SecondValue) | SUM(ThirdValue) | +-----------------+------------------+-----------------+ | 170 | 170 | 170 | +-----------------+------------------+-----------------+
Kiểm tra: 10+60+80+20 = 170 ✓ | 20+50+90+10 = 170 ✓ | 30+40+100+0 = 170 ✓
Mở rộng: Tổng nhiều cột động (dynamic columns)
Nếu số cột không cố định, dùng INFORMATION_SCHEMA.COLUMNS sinh SQL động:
SELECT GROUP_CONCAT(CONCAT('SUM(', COLUMN_NAME, ') AS sum_', COLUMN_NAME) SEPARATOR ', ')
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'DemoTable' AND TABLE_SCHEMA = DATABASE()
AND DATA_TYPE IN ('int', 'bigint', 'decimal', 'float', 'double');
Kết quả chuỗi SQL có thể copy chạy hoặc dùng prepared statement.
Các hàm tổng hợp hữu ích khác
| Hàm | Chức năng |
|---|---|
| AVG() | Trung bình |
| MIN() / MAX() | Giá trị nhỏ nhất / lớn nhất |
| COUNT() | Số hàng không NULL |
| STDDEV() / VARIANCE() | Độ lệch chuẩn / Phương sai |
| GROUP_CONCAT() | Ghép chuỗi giá trị |