Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Hàm SUM () trong SQL Server

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ụ.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Thay đổi chênh lệch múi giờ trên giá trị datetimeoffset trong SQL Server (T-SQL)

  2. Gọi một thủ tục được lưu trữ với tham số trong c #

  3. Tôi có thực sự cần sử dụng SET XACT_ABORT ON không?

  4. Triển khai chỉ báo hiệu suất máy chủ SQL cho các truy vấn, thủ tục được lưu trữ và trình kích hoạt

  5. Chạy SERVERPROPERTY () với một máy chủ được liên kết trong SQL Server