计算诸如平均值和总和的函数被称为聚集函数(Aggregate Functions )。当使用聚集函数时,SQLServer对整个表或表里某个组中的字段进行汇总、计算,然后为它创建相应字段的单个的值。
可以在SELECT语句中单独使用聚集函数,也可以与语句GROUP BY联合使用;
除了COUNT(*)函数,如果记录集中没有满足WHERE子句的记录,则所有的聚集函数都将返回空值。如果没有满足WHERE子句的记录,COUNT(*)函数返回0。
注意:适当的索引能够加快聚集函数的运行。
字段的数据类型决定了你可以用在这个字段上的聚集函数类型。下面的表中列出了聚集函数和数目类型间的关系。
[color=violet]函数 数据类型
COUNT COUNT是唯一一个可以用于text,ntext或image数据类型的函数。
MIN和MAX MIN和MAX函数不能用于数据类型是bit的字段。
SUM和AVG SUM和AVG函数只能用于数据类型是int、smallint、tinyint、decimal、numeric、float、real、money和smanmoney的字段。[/color]在你使用函数SUM和AVG时,SQLServer把结果集中的smallim或tinyint这些数据类型当做int处理。
聚集函数的部分语法如下:
SELECT [ ALL | DISTINCT ]
[ TOP n [PERCENT] [ WITH TIES] ] <select_list>
[ INTO new_table ]
[ FROM <table_sources> ]
[ WHERE <search_conditions> ]
[ [ GROUP BY [ALL] group_by_expression [,.n]]
[HAVING <search_conditions> ]
[ WITH { CUBE | ROLLUP } ]
]
[ ORDER BY { column_name [ ASC | DESC ] } [,.n] ]
[ COMPUTE
{ { AVG | COUNT | MAX | MIN | SUM } (expression) } [,.n]
[ BY expression [,.n]
]
空值(null values)能使聚集函数创建意想不到的结果。例如,当你执行一个包含函数COUNT的SELECT语句时,如果表中含有18个记录,其中含有两个空值,则结果集将返回16条记录。SQL Server将忽略含有空值的记录。
因此,如果想对包含空值的字段使用聚集函数,需要额外的小心,因为此时你得到的结果集并不能代表数据的真实情况。但如果必须使用聚集函数的话,应注意以下事项:
可以在SELECT语句中单独使用聚集函数,也可以与语句GROUP BY联合使用;
除了COUNT(*)函数,如果记录集中没有满足WHERE子句的记录,则所有的聚集函数都将返回空值。如果没有满足WHERE子句的记录,COUNT(*)函数返回0。
注意:适当的索引能够加快聚集函数的运行。
字段的数据类型决定了你可以用在这个字段上的聚集函数类型。下面的表中列出了聚集函数和数目类型间的关系。
[color=violet]函数 数据类型
COUNT COUNT是唯一一个可以用于text,ntext或image数据类型的函数。
MIN和MAX MIN和MAX函数不能用于数据类型是bit的字段。
SUM和AVG SUM和AVG函数只能用于数据类型是int、smallint、tinyint、decimal、numeric、float、real、money和smanmoney的字段。[/color]在你使用函数SUM和AVG时,SQLServer把结果集中的smallim或tinyint这些数据类型当做int处理。
聚集函数的部分语法如下:
SELECT [ ALL | DISTINCT ]
[ TOP n [PERCENT] [ WITH TIES] ] <select_list>
[ INTO new_table ]
[ FROM <table_sources> ]
[ WHERE <search_conditions> ]
[ [ GROUP BY [ALL] group_by_expression [,.n]]
[HAVING <search_conditions> ]
[ WITH { CUBE | ROLLUP } ]
]
[ ORDER BY { column_name [ ASC | DESC ] } [,.n] ]
[ COMPUTE
{ { AVG | COUNT | MAX | MIN | SUM } (expression) } [,.n]
[ BY expression [,.n]
]
空值(null values)能使聚集函数创建意想不到的结果。例如,当你执行一个包含函数COUNT的SELECT语句时,如果表中含有18个记录,其中含有两个空值,则结果集将返回16条记录。SQL Server将忽略含有空值的记录。
因此,如果想对包含空值的字段使用聚集函数,需要额外的小心,因为此时你得到的结果集并不能代表数据的真实情况。但如果必须使用聚集函数的话,应注意以下事项: