SUM (Transact-SQL)

返回表达式中所有值的和或仅非重复值的和。SUM 只能用于数字列。空值将被忽略。后面可以跟 OVER 子句 (Transact-SQL)

主题链接图标Transact-SQL 语法约定

语法

SUM ( [ ALL | DISTINCT ] expression )

参数

  • ALL
    对所有的值应用此聚合函数。ALL 是默认值。

  • DISTINCT
    指定 SUM 返回唯一值的和。

  • expression
    常量、列或函数与算术、位和字符串运算符的任意组合。expression 是精确数字或近似数字数据类型类别(bit 数据类型除外)的表达式。不允许使用聚合函数和子查询。有关详细信息,请参阅表达式(Transact-SQL)

返回类型

以最精确的 expression 数据类型返回所有 expression 值的和。

表达式结果

返回类型

tinyint

int

smallint

int

int

int

bigint

bigint

decimal 类别 (p, s)

decimal(38, s)

money 和 smallmoney 类别

money

float 和 real 类别

float

示例

A. 在聚合和行聚合中使用 SUM

以下示例显示了聚合函数与行聚合函数之间的区别。第一个示例显示了只提供汇总数据的聚合函数,第二个示例显示了提供详尽数据和汇总数据的行聚合函数。

USE AdventureWorks2008R2;
GO
SELECT Color, SUM(ListPrice), SUM(StandardCost)
FROM Production.Product
WHERE Color IS NOT NULL 
    AND ListPrice != 0.00 
    AND Name LIKE 'Mountain%'
GROUP BY Color
ORDER BY Color;
GO

下面是结果集:

Color

--------------- --------------------- ---------------------

Black 27404.84 15214.9616

Silver 26462.84 14665.6792

White 19.00 6.7926

(3 row(s) affected)

USE AdventureWorks2008R2;
GO
SELECT Color, ListPrice, StandardCost
FROM Production.Product
WHERE Color IS NOT NULL 
    AND ListPrice != 0.00 
    AND Name LIKE 'Mountain%'
ORDER BY Color
COMPUTE SUM(ListPrice), SUM(StandardCost) BY Color;
GO

下面是结果集:

Color ListPrice StandardCost

--------------- --------------------- ---------------------

Black 2294.99 1251.9813

Black 2294.99 1251.9813

Black 2294.99 1251.9813

Black 1079.99 598.4354

Black 1079.99 598.4354

Black 1079.99 598.4354

Black 1079.99 598.4354

Black 3374.99 1898.0944

Black 3374.99 1898.0944

Black 3374.99 1898.0944

Black 3374.99 1898.0944

Black 539.99 294.5797

Black 539.99 294.5797

Black 539.99 294.5797

Black 539.99 294.5797

Black 539.99 294.5797

sum sum

--------------------- ---------------------

27404.84 15214.9616

Color ListPrice StandardCost

--------------- --------------------- ---------------------

Silver 2319.99 1265.6195

Silver 2319.99 1265.6195

Silver 2319.99 1265.6195

Silver 3399.99 1912.1544

Silver 3399.99 1912.1544

Silver 3399.99 1912.1544

Silver 3399.99 1912.1544

Silver 769.49 419.7784

Silver 769.49 419.7784

Silver 769.49 419.7784

Silver 769.49 419.7784

Silver 564.99 308.2179

Silver 564.99 308.2179

Silver 564.99 308.2179

Silver 564.99 308.2179

Silver 564.99 308.2179

sum sum

--------------------- ---------------------

26462.84 14665.6792

Color ListPrice StandardCost

--------------- --------------------- ---------------------

White 9.50 3.3963

White 9.50 3.3963

sum sum

--------------------- ---------------------

19.00 6.7926

(37 row(s) affected)

B. 计算多列的组合计

以下示例针对 Product 表中列出的每种颜色计算 ListPrice 与 StandardCost 的和。

USE AdventureWorks2008R2;
GO
SELECT Color, SUM(ListPrice), SUM(StandardCost)
FROM Production.Product
GROUP BY Color
ORDER BY Color;
GO

下面是结果集:

Color

--------------- --------------------- ---------------------

NULL 4182.32 2238.4755

Black 67436.26 38636.5002

Blue 24015.66 14746.1464

Grey 125.00 51.5625

Multi 478.92 272.2542

Red 53274.10 32610.7661

Silver 36563.13 20060.0483

Silver/Black 448.13 198.97

White 36.98 13.5172

Yellow 34527.29 21507.6521

(10 row(s) affected)

请参阅

参考