Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Truy vấn MySQL tính tổng các trường có cùng giá trị cột

Để tính tổng giá trị của một cột, gom nhóm theo giá trị của cột khác, dùng GROUP BY với SUM().

Ví dụ minh họa

Tạo bảng chi phí khách hàng:

CREATE TABLE sumOfFieldsDemo (
    Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    ClientSerialNumber VARCHAR(100),
    ClientCost INT
);

INSERT INTO sumOfFieldsDemo (ClientSerialNumber, ClientCost) VALUES
('1111', 450), ('2222', 550), ('3333', 150),
('3333', 250), ('2222', 1000), ('1111', 1000),
('1111', 500), ('4444', 100);

Dữ liệu (8 hàng):

+----+--------------------+------------+
| Id | ClientSerialNumber | ClientCost |
+----+--------------------+------------+
| 1  | 1111               | 450        |
| 2  | 2222               | 550        |
| 3  | 3333               | 150        |
| 4  | 3333               | 250        |
| 5  | 2222               | 1000       |
| 6  | 1111               | 1000       |
| 7  | 1111               | 500        |
| 8  | 4444               | 100        |
+----+--------------------+------------+

Tính tổng chi phí theo mỗi Serial Number:

SELECT Id, ClientSerialNumber, SUM(ClientCost) AS TotalSum
FROM sumOfFieldsDemo
GROUP BY ClientSerialNumber;

Kết quả (4 nhóm):

+----+--------------------+----------+
| Id | ClientSerialNumber | TotalSum |
+----+--------------------+----------+
| 1  | 1111               | 1950     |
| 2  | 2222               | 1550     |
| 3  | 3333               | 400      |
| 8  | 4444               | 100      |
+----+--------------------+----------+

Lưu ý:

  • Cột Id trong kết quả là giá trị đầu tiên của nhóm (do MySQL cho phép chọn cột không gom nhóm và không tổng hợp - hành vi "non-deterministic" trừ khi bật ONLY_FULL_GROUP_BY).
  • Để an toàn, chỉ chọn cột gom nhóm và cột tổng hợp: SELECT ClientSerialNumber, SUM(ClientCost) ....
  • Có thể thêm HAVING SUM(ClientCost) > 1000 để lọc nhóm có tổng lớn.