Trong MySQL, SUM()
hàm tổng hợp trả về tổng của một biểu thức nhất định.
Nó cũng có thể được sử dụng để trả về tổng của tất cả các giá trị khác biệt (duy nhất) trong một biểu thức.
Cú pháp
Cú pháp như sau:
SUM([DISTINCT] expr) [over_clause]
Dữ liệu mẫu
Giả sử chúng ta có một bảng được gọi là Products
với dữ liệu sau:
SELECT
VendorId,
ProductName,
ProductPrice
FROM Products;
Kết quả:
+----------+---------------------------------+--------------+ | VendorId | ProductName | ProductPrice | +----------+---------------------------------+--------------+ | 1001 | Left handed screwdriver | 25.99 | | 1001 | Right handed screwdriver | 25.99 | | 1001 | Long Weight (blue) | 14.75 | | 1001 | Long Weight (green) | 11.99 | | 1002 | Sledge Hammer | NULL | | 1003 | Chainsaw | 245.00 | | 1003 | Straw Dog Box | 55.99 | | 1004 | Bottomless Coffee Mugs (4 Pack) | 9.99 | +----------+---------------------------------+--------------+
Ví dụ
Chúng tôi có thể sử dụng truy vấn sau để nhận tổng của tất cả các mức giá.
SELECT SUM(ProductPrice)
FROM Products;
Kết quả:
389.70
Tại đây, thông tin giá được lưu trữ trong ProductPrice
và do đó chúng tôi chuyển nó làm đối số cho SUM()
hàm, sau đó sẽ tính tổng và trả về kết quả.
Giá trị rỗng
SUM()
hàm bỏ qua bất kỳ giá trị NULL nào. Trong bảng mẫu của chúng tôi ở trên, búa tạ có giá trị NULL trong ProductPrice
của nó nhưng điều đó đã bị bỏ qua trong tính toán.
Kết quả đã lọc
SUM()
hàm hoạt động trên các hàng được trả về bởi truy vấn. Vì vậy, nếu bạn lọc kết quả, đầu ra của SUM()
sẽ phản ánh điều đó.
SELECT SUM(ProductPrice)
FROM Products
WHERE VendorId = 1001;
Kết quả:
78.72
Trong trường hợp này, 78,72 là tổng của tất cả các sản phẩm được cung cấp bởi nhà cung cấp được chỉ định.
DISTINCT
Từ khóa
Bạn có thể sử dụng DISTINCT
từ khóa với SUM()
để chỉ tính các giá trị riêng biệt. Nghĩa là, nếu có bất kỳ giá trị trùng lặp nào, chúng được coi là một giá trị.
Ví dụ:
SELECT SUM(DISTINCT ProductPrice)
FROM Products;
Kết quả:
363.71
Bàn của chúng tôi có hai mặt hàng có cùng mức giá (tuốc nơ vít thuận tay trái và tuốc nơ vít tay phải đều có giá 25,99). DISTINCT
kết quả từ khóa trong cả hai giá trị đó được coi là một.
Chức năng của cửa sổ
Chúng ta có thể sử dụng OVER
mệnh đề với SUM()
chức năng tạo một chức năng cửa sổ. Xem SQL SUM()
cho người mới bắt đầu làm ví dụ.