SUM (Transact-SQL)

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

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

语法

SUM ( [ ALL | DISTINCT ] expression )

参数

  • ALL
    对所有的值应用此聚合函数。ALL 是默认值。
  • DISTINCT
    指定 SUM 返回唯一值的和。
  • expression
    常量、列或函数与算术、位和字符串运算符的任意组合。expression 是精确数字或近似数字数据类型类别(bit 数据类型除外)的表达式。不允许使用聚合函数和子查询。有关详细信息,请参阅表达式(Transact-SQL)

返回类型

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

表达式结果 返回类型

整数类别

int

decimal 类别 (p, s)

decimal(38, s)

moneysmallmoney 类别

money

floatreal 类别

float

ms187810.note(zh-cn,SQL.90).gif重要提示:
当使用 CUBE 或 ROLLUP 时,不支持非重复聚合,例如 AVG(DISTINCT column_name)、COUNT(DISTINCT column_name)、MAX(DISTINCT column_name)、MIN(DISTINCT column_name) 和 SUM(DISTINCT column_name)。如果使用这类聚合,SQL Server 2005 数据库引擎将返回错误消息并取消查询。

示例

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

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

USE AdventureWorks;
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 AdventureWorks;
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 表中列出的每种颜色计算 ListPriceStandardCost 的和。

USE AdventureWorks;
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)

请参阅

参考

聚合函数 (Transact-SQL)
OVER 子句 (Transact-SQL)

帮助和信息

获取 SQL Server 2005 帮助