在本教程中,将学习如何使用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日期函数