Để tính tổng tích (hoặc các phép toán khác) từ nhiều cột và gom nhóm theo một cột, dùng GROUP BY với hàm tổng hợp.
Cú pháp
SELECT yourColumnName1, SUM(yourColumnName2 * yourColumnName3) AS anyAliasName FROM yourTableName GROUP BY yourColumnName1;
Ví dụ minh họa
Tạo bảng đơn hàng với số lượng và đơn giá:
CREATE TABLE calculateValueDemo (
Id INT,
ProductPrice INT,
ProductWeight INT
);
INSERT INTO calculateValueDemo VALUES (100, 35, 5);
INSERT INTO calculateValueDemo VALUES (101, 50, 3);
INSERT INTO calculateValueDemo VALUES (100, 100, 4);
INSERT INTO calculateValueDemo VALUES (101, 500, 2);
Dữ liệu:
+------+--------------+---------------+ | Id | ProductPrice | ProductWeight | +------+--------------+---------------+ | 100 | 35 | 5 | | 101 | 50 | 3 | | 100 | 100 | 4 | | 101 | 500 | 2 | +------+--------------+---------------+
Tính tổng giá trị (Price × Weight) theo từng Id:
SELECT Id, SUM(ProductPrice * ProductWeight) AS Total FROM calculateValueDemo GROUP BY Id;
Kết quả:
+------+-------+ | Id | Total | +------+-------+ | 100 | 575 | | 101 | 1150 | +------+-------+
Giải thích:
ProductPrice * ProductWeighttính thành tiền cho mỗi dòng.SUM(...)cộng dồn thành tiền theo nhómId.- Có thể thay
SUMbằngAVG,MIN,MAXtùy nhu cầu.