开窗函数、聚合函数

开窗函数是在 ISO SQL 标准中定义的。SQL Server 提供排名开窗函数和聚合开窗函数。窗口是用户指定的一组行。开窗函数计算从窗口派生的结果集中各行的值。

可以在单个查询中将多个排名或聚合开窗函数与单个 FROM 子句一起使用。但是,每个函数的 OVER 子句在分区和排序上可能不同。OVER 子句不能与 CHECKSUM 聚合函数结合使用。

聚合函数 (Transact-SQL)

聚合函数对一组值执行计算,并返回单个值。除了 COUNT 以外,聚合函数都会忽略空值。聚合函数经常与 SELECT 语句的 GROUP BY 子句一起使用。

开窗函数

在SQL Server中,一组行被称为一个窗口,开窗函数是指可以用于“分区”或“分组”计算的函数。这些函数结合OVER子句对组内的数据进行编号、求和、计算平均值等。因此,像ROW_NUMBER、SUM、AVG都可以称为开窗函数。可分为排名开窗函数、聚合开窗函数。带有空括号的OVER子句会提供所有符合条件的行进行计算。例如:SUM(val) OVER()

OVER 子句 (Transact-SQL)

确定在应用关联的开窗函数之前,行集的分区和排序。

适用范围:

排名开窗函数

聚合开窗函数。


 

Ranking Window Functions

<OVER_CLAUSE> :: =

    OVER ( [ PARTITION BY value_expression , ... [ n ] ]

           <ORDER BY_Clause> )

 

Aggregate Window Functions

<OVER_CLAUSE> :: =

    OVER ( [ PARTITION BY value_expression , ... [ n ] ] )

 

 


PARTITION BY

将结果集分为多个分区。 开窗函数分别应用于每个分区,并为每个分区重新启动计算。

value_expression

指定对相应 FROM 子句生成的行集进行分区所依的列。<value_expression> 只能引用 FROM 子句可用的列。 它不能引用选择列表中的表达式或别名。<value_expression> 可为列表达式、标量子查询、标量函数或用户定义的变量。

 

posted @ 2012-04-01 17:08  山清石玉  阅读(2621)  评论(0)    收藏  举报