Cộng các cột trên cùng một hàng (row-level addition)
Khác với SUM() (tổng dọc theo cột), để cộng ngang các cột trên một hàng dùng toán tử + trực tiếp trong SELECT.
Cú pháp
SELECT *, (cot1 + cot2 + cot3) AS tongHang
FROM tenBang;
Ví dụ: Tính tổng điểm 3 môn
Bảng AddingColumnDemo:
CREATE TABLE AddingColumnDemo (
StudentId INT, StudentName VARCHAR(20),
MathMarks INT, PhysicsMarks INT, ChemistryMarks INT
);
INSERT INTO AddingColumnDemo VALUES
(1,'John',35,45,76), (2,'Bob',67,76,88),
(3,'Carol',45,56,43), (4,'Mike',82,75,71), (5,'Sam',92,89,88);
Truy vấn:
SELECT *, (MathMarks + PhysicsMarks + ChemistryMarks) AS TotalResult
FROM AddingColumnDemo;
Kết quả
+-----------+-------------+-----------+--------------+----------------+-------------+
| StudentId | StudentName | MathMarks | PhysicsMarks | ChemistryMarks | TotalResult |
+-----------+-------------+-----------+--------------+----------------+-------------+
| 1 | John | 35 | 45 | 76 | 156 |
| 2 | Bob | 67 | 76 | 88 | 231 |
| 3 | Carol | 45 | 56 | 43 | 144 |
| 4 | Mike | 82 | 75 | 71 | 228 |
| 5 | Sam | 92 | 89 | 88 | 269 |
+-----------+-------------+-----------+--------------+----------------+-------------+
Xử lý NULL
Nếu cột có NULL, kết quả sẽ là NULL. Dùng COALESCE hoặc IFNULL:
SELECT *,
(COALESCE(MathMarks,0) + COALESCE(PhysicsMarks,0) + COALESCE(ChemistryMarks,0)) AS TotalResult
FROM AddingColumnDemo;
So sánh với SUM()
| Phép toán | SUM(cot) | cot1 + cot2 |
|---|---|---|
| Hướng | Dọc (cột) | Ngang (hàng) |
| Kết quả | 1 giá trị cho cả bảng | 1 giá trị cho mỗi hàng |
| NULL handling | Bỏ qua NULL | Kết quả NULL nếu có NULL |