在本教學中,將學習如何使用SQL Server SUM()
函數來計算值的總和。
SQL Server SUM()
函數是一個聚合函數,用於計算運算式中所有或不同值的總和。
SUM()
函數的語法如下:
SUM([ALL | DISTINCT ] expression)
在這個語法中:
ALL
指示SUM()
函數返回包括重複項在內的所有值的總和。默認情況下使用ALL
。DISTINCT
指示SUM()
函數計算唯一不同值的總和。expression
是返回精確或近似數值的任何有效運算式。請注意,運算式中不接受聚合函數或子查詢。
注意:
SUM()
函數忽略NULL
值。
ALL與DISTINCT比較
下麵將創建一個新表來演示ALL
和DISTINCT
之間的區別:
CREATE TABLE t(
val INT
);
INSERT INTO t(val)
VALUES(1),(2),(3),(3),(4),(NULL),(5);
SELECT
val
FROM
t;
執行上面查詢語句,得到以下結果:
以下語句返回val
列中所有值的總和:
SELECT
SUM(val) total
FROM
t;
執行上面查詢語句,得到以下結果:
total
-----------
18
Warning: Null value is eliminated by an aggregate or other SET operation.
(1 row affected)
但是,當使用DISTINCT
修飾符時,SUM()
函數僅返回val
列中唯一值的總和:
SELECT
SUM(DISTINCT val) total
FROM
t;
執行上面查詢語句,得到以下結果:
total
-----------
15
Warning: Null value is eliminated by an aggregate or other SET operation.
(1 row affected)
SQL Server SUM()函數示例
下麵來看一些使用SUM()
函數的例子。
1. SQL Server SUM()函數簡單的示例
以下語句返回所有倉庫中所有商品的總庫存:
SELECT
SUM(quantity) total_stocks
FROM
production.stocks;
以下顯示輸出:
total_stocks
------------
13511
(1 row affected)
1. SQL Server SUM()函數帶有GROUP BY示例
以下語句按商店ID查找總庫存:
SELECT
store_id,
SUM(quantity) store_stocks
FROM
production.stocks
GROUP BY
store_id;
執行上面查詢語句,得到以下結果:
在這個例子中:
- 首先,GROUP BY子句按商店ID將庫存劃分為組。
- 其次,
SUM()
函數應用於每個分組以計算每個組的總庫存。
如果要顯示商店名稱而不是商店ID,可以使用以下語句:
SELECT
store_name,
SUM(quantity) store_stocks
FROM
production.stocks w
INNER JOIN sales.stores s
ON s.store_id = w.store_id
GROUP BY
store_name;
執行上面查詢語句,得到以下結果:
3. SQL Server SUM()函數與HAVING子句示例
以下語句查找每種產品的庫存,僅返回庫存大於100
的產品:
SELECT
product_name,
SUM(quantity) total_stocks
FROM
production.stocks s
INNER JOIN production.products p
ON p.product_id = s.product_id
GROUP BY
product_name
HAVING
SUM(quantity) > 100
ORDER BY
total_stocks DESC;
執行上面查詢語句,得到以下結果:
4. SQL Server SUM()函數帶有運算式的示例
以下示例在SUM()
函數中使用運算式計算每個銷售訂單的淨值:
SELECT
order_id,
SUM(
quantity * list_price * (1 - discount)
) net_value
FROM
sales.order_items
GROUP BY
order_id
ORDER BY
net_value DESC;
執行上面查詢語句,得到以下結果:
在本教學中,學習了如何使用SQL Server SUM()
函數來計算值的總和。
上一篇:
SQL Server聚合函數
下一篇:
SQL Server日期函數