Tính tổng có điều kiện trong MySQL
Sử dụng hàm tổng hợp SUM() kết hợp với mệnh đề WHERE để chỉ cộng các giá trị thỏa mãn điều kiện cụ thể.
1. Tạo bảng và chèn dữ liệu
mysql> CREATE TABLE DemoTable (
CustomerId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
ProductAmount INT,
CustomerCountryName VARCHAR(10)
);
mysql> INSERT INTO DemoTable (ProductAmount, CustomerCountryName) VALUES
(190, 'US'), (200, 'UK'), (1500, 'AUS'),
(2010, 'US'), (7890, 'UK'), (500, 'US');
2. Xem dữ liệu
mysql> SELECT * FROM DemoTable;
Kết quả:
+------------+---------------+---------------------+ | CustomerId | ProductAmount | CustomerCountryName | +------------+---------------+---------------------+ | 1 | 190 | US | | 2 | 200 | UK | | 3 | 1500 | AUS | | 4 | 2010 | US | | 5 | 7890 | UK | | 6 | 500 | US | +------------+---------------+---------------------+
3. Truy vấn: Tổng ProductAmount cho khách hàng US
mysql> SELECT SUM(ProductAmount) AS Total_Amount
FROM DemoTable
WHERE CustomerCountryName = 'US';
4. Kết quả
+--------------+ | Total_Amount | +--------------+ | 2700 | +--------------+
Giải thích: 190 + 2010 + 500 = 2700 (chỉ 3 hàng có Country = 'US').
Mở rộng - Tổng theo nhiều nhóm:
SELECT CustomerCountryName, SUM(ProductAmount) AS Total_Amount FROM DemoTable GROUP BY CustomerCountryName;
Kết quả:
+---------------------+--------------+ | CustomerCountryName | Total_Amount | +---------------------+--------------+ | US | 2700 | | UK | 8090 | | AUS | 1500 | +---------------------+--------------+