Sử dụng CASE WHEN bên trong SUM() để tách riêng tổng dương và tổng âm.
Tạo bảng và dữ liệu
mysql> CREATE TABLE DemoTable(Id INT, Value INT); Query OK, 0 rows affected (0.51 sec) mysql> INSERT INTO DemoTable VALUES(10, 100); Query OK, 1 row affected (0.15 sec) mysql> INSERT INTO DemoTable VALUES(10, -110); Query OK, 1 row affected (0.10 sec) mysql> INSERT INTO DemoTable VALUES(10, 200); Query OK, 1 row affected (0.10 sec) mysql> INSERT INTO DemoTable VALUES(10, -678); Query OK, 1 row affected (0.17 sec)
Truy vấn tách tổng dương/âm
mysql> SELECT Id,
SUM(CASE WHEN Value > 0 THEN Value ELSE 0 END) AS Positive_Value,
SUM(CASE WHEN Value < 0 THEN Value ELSE 0 END) AS Negative_Value
FROM DemoTable
GROUP BY Id;
Kết quả:
+------+----------------+----------------+ | Id | Positive_Value | Negative_Value | +------+----------------+----------------+ | 10 | 300 | -788 | +------+----------------+----------------+ 1 row in set (0.00 sec)
Ứng dụng: Kế toán (thu/chi), thống kê biến động giá cổ phiếu, cân đối sổ sách.