Trong SQL Server, 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 biểu thức.
SUM()
chỉ hoạt động trên các cột số. Giá trị rỗng bị bỏ qua.
Cú pháp
Cú pháp như sau:
SUM ( [ ALL | DISTINCT ] expression )
Nó cũng có thể được sử dụng với OVER
mệnh đề:
SUM ([ ALL ] expression) OVER ( [ partition_by_clause ] order_by_clause)
Ví dụ
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 | Long Weight (blue) | 14.75 | | 1001 | Long Weight (green) | 11.99 | | 1002 | Sledge Hammer | 33.49 | | 1003 | Chainsaw | 245.00 | | 1003 | Straw Dog Box | NULL | | 1004 | Bottomless Coffee Mugs (4 Pack) | 9.99 | | 1001 | Right handed screwdriver | 25.99 | +------------+---------------------------------+----------------+
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ả:
367.20
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 các giá trị null khi thực hiện phép tính của nó.
Nếu cột chứa giá trị null, bạn có thể thấy cảnh báo cho biết rằng giá trị null đã bị loại bỏ.
Ví dụ:đây là cảnh báo mà tôi nhận được khi chạy ví dụ trên:
SELECT SUM(ProductPrice)
FROM Products;
Kết quả:
+--------------------+ | (No column name) | |--------------------| | 367.20 | +--------------------+ Warning: Null value is eliminated by an aggregate or other SET operation.
Kết quả được 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ả, kết quả là 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(ALL ProductPrice) AS "All",
SUM(DISTINCT ProductPrice) AS "Distinct"
FROM Products;
Kết quả:
+--------+------------+ | All | Distinct | |--------+------------| | 367.20 | 341.21 | +--------+------------+ Warning: Null value is eliminated by an aggregate or other SET operation.
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 sổ
SUM()
có thể được sử dụng với OVER
mệnh đề để 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ụ.