Tính tổng cột (SUM) trong MySQL
Sử dụng hàm tổng hợp SUM() để cộng dồn tất cả giá trị trong một cột số.
Ví dụ minh họa
Tạo bảng DemoTable739:
mysql> CREATE TABLE DemoTable739 (Price INT); Query OK, 0 rows affected (0.65 sec)
Chèn dữ liệu:
mysql> INSERT INTO DemoTable739 VALUES(100); Query OK, 1 row affected (0.15 sec) mysql> INSERT INTO DemoTable739 VALUES(50); Query OK, 1 row affected (0.14 sec) mysql> INSERT INTO DemoTable739 VALUES(1200); Query OK, 1 row affected (0.19 sec) mysql> INSERT INTO DemoTable739 VALUES(500); Query OK, 1 row affected (0.37 sec) mysql> INSERT INTO DemoTable739 VALUES(800); Query OK, 1 row affected (0.20 sec)
Xem dữ liệu:
mysql> SELECT * FROM DemoTable739;
+-------+ | Price | +-------+ | 100 | | 50 | | 1200 | | 500 | | 800 | +-------+ 5 rows in set (0.00 sec)
Tính tổng cột Price:
mysql> SELECT SUM(Price) AS Total_Price FROM DemoTable739;
Kết quả:
+-------------+ | Total_Price | +-------------+ | 2650 | +-------------+ 1 row in set (0.00 sec)
Mở rộng: SUM với điều kiện và nhóm
-- Tổng có điều kiện (chỉ giá > 200) SELECT SUM(Price) FROM DemoTable739 WHERE Price > 200; -- Tổng theo nhóm (cần cột nhóm) SELECT Category, SUM(Price) FROM Products GROUP BY Category; -- Tổng có trọng số SELECT SUM(Price * Quantity) AS Revenue FROM OrderItems; -- Tổng nhiều cột SELECT SUM(Price), SUM(Discount), SUM(Tax) FROM Orders;
Xử lý NULL
SUM()tự động bỏ quaNULL- Nếu tất cả giá trị là NULL → kết quả là
NULL(không phải 0) - Để trả về 0 thay vì NULL:
COALESCE(SUM(Price), 0)hoặcIFNULL(SUM(Price), 0)
Hàm tổng hợp liên quan
| Hàm | Chức năng | Ví dụ |
|---|---|---|
SUM() | Tổng | SUM(price) |
AVG() | Trung bình | AVG(score) |
COUNT() | Đếm hàng | COUNT(*) |
MIN() | Giá trị nhỏ nhất | MIN(age) |
MAX() | Giá trị lớn nhất | MAX(salary) |
STD() | Độ lệch chuẩn | STD(height) |
VARIANCE() | Phương sai | VARIANCE(score) |