[MS SQL]聚合函数聚合函数 聚合函数对一组值执行计算并返回单一的值。除 COUNT 函数之外,聚合函数忽略空值。聚合函数经常与 SELECT 语句的 GROUP BY 子句一同使用。所有聚合函数都具有确定性。任何时候用一组给定的输入值调用它们时,都返回相同的值。有关函数确定性的更多信息,请参见确定性函数和非确定性函数。仅在下列项中聚合函数允许作为表达式使用: SELECT 语句的选择列表(子查询或外部查询)。 COMPUTE 或 COMPUTE BY 子句。 HAVING 子句。 Transact-SQL 编程语言提供下列聚合函数:AVG MAX BINARY_CHECKSUM MIN CHECKSUM SUM CHECKSUM_AGG STDEV COUNT STDEVP COUNT_BIG VAR GROUPING VARP
聚合函数对一组值执行计算并返回单一的值。除 COUNT 函数之外,聚合函数忽略空值。聚合函数经常与 SELECT 语句的 GROUP BY 子句一同使用。所有聚合函数都具有确定性。任何时候用一组给定的输入值调用它们时,都返回相同的值。有关函数确定性的更多信息,请参见确定性函数和非确定性函数。仅在下列项中聚合函数允许作为表达式使用: SELECT 语句的选择列表(子查询或外部查询)。
COMPUTE 或 COMPUTE BY 子句。
HAVING 子句。
Transact-SQL 编程语言提供下列聚合函数:AVG MAX
BINARY_CHECKSUM MIN
CHECKSUM SUM
CHECKSUM_AGG STDEV
COUNT STDEVP
COUNT_BIG VAR
GROUPING VARP
使用聚合函数,可为表中的所有值创建汇总。例如,创建下面的查询以显示 titles 表中所有书的总价格:SELECT SUM(price)
FROM titles
通过在多个列中使用聚合函数,可在同一查询中创建多个聚合。例如,可创建计算 price 列的合计和 discount 列的平均值的查询。也可在同一查询中使用不同的方法(如合计、计数和平均)聚合同一个列。例如,下面的查询平均并汇总 titles 表中的 price 列:SELECT AVG(price), SUM(price)
FROM titles
如果添加搜索条件,则可聚合符合条件的行的子集。注意 还可对表中的所有行计数,或对符合特定条件的行计数。有关详细信息,请参见对表中的行计数。当为表中的所有行创建一个单独的聚合值时,只能显示聚合值本身。例如,如果对 titles 表的 price 列值进行合计,则不能也显示个别的书名、出版商名称等。注意 如果进行小计,即创建组,则可显示每组的列值。有关详细信息,请参见对查询结果中的行分组。聚合所有行的值 确定要聚合的表已在关系图窗格中。
右击关系图窗格的背景,然后从快捷菜单中选择"分组"命令。查询设计器将"分组"列添加到网格窗格中的网格上。
将要聚合的列添加到网格窗格中。确保将列标记为输出。
查询设计器自动将列别名指派给正汇总的列。可以用更有意义的名称替换自动生成的别名。有关详细信息,请参见创建列别名。在"分组"网格列中选择适当的聚合函数,例如:Sum、Avg、Min、Max、Count。如果在结果集中只聚合唯一行,则选择带有 DISTINCT 选项的聚合函数,例如 Min Distinct。不要选择 Group By、Expression 或 Where,因为当聚合所有行时这些选项不再适用。
查询设计器在 SQL 窗格的语句中用指定的聚合函数替换列名。例如,SQL 语句可能象下面这样:SELECT SUM(price)
FROM titles
如果要在查询中创建多个汇总,则重复步骤 3 和 步骤 4。
当将其它列添加到查询输出列表中或按列表排序时,查询设计器自动将词"Group By"填充到网格的"分组"列中。选择适当的聚合函数。添加搜索条件(若有)以指定要汇总的行的子集。
当执行查询时,结果窗格显示指定的聚合。注意 查询设计器在 SQL 窗格中将聚合函数作为 SQL 语句的一部分来维护,直到显式关闭"分组依据"模式。因此,如果通过更改查询类型或更改关系图窗格中现有的表或表结构化对象来修改查询,所得到的查询中可能包含无效的聚合函数。
聚合函数
若要汇总表中的所有数据,请创建包含 SUM( ) 或 AVG( ) 这类函数的聚合查询。运行该查询时,结果集中将包含一个汇总信息行。例如,通过创建对 price 列的内容求和的查询,计算 titles 表中所有书的总价。查询的输出结果可能象下面这样:相应的 SQL 语句如下:SELECT SUM(price) total_price
FROM titles
可以使用下列聚合函数:聚合函数 描述
AVG(expr) 列值的平均值。该列只能包含数字数据。
COUNT(expr), COUNT(*) 列值的计数(如果将列名指定为 expr)或是表或组中所有行的计数(如果指定 *)。COUNT(expr) 忽略空值,但 COUNT(*) 在计数中包含空值。
MAX(expr) 列中最大的值(文本数据类型中按字母顺序排在最后的值)。忽略空值。
MIN(expr) 列中最小的值(文本数据类型中按字母顺序排在最前的值)。忽略空值。
SUM(expr) 列值的合计。该列只能包含数字数据。
当使用聚合函数时,默认情况下,汇总信息包含所有的指定行。在某些情况下,结果集包含非唯一的行。可使用聚合函数的 DISTINCT 选项筛选出非唯一的行。可将聚合函数同其它表达式组合使用,以计算其它汇总值.
一般的聚合函数有:
AVG
COUNT
COUNT_BIG
DISTINCT
MAX
MIN
STDEV
STDEVP
SUM
VAR
VARP
...