开窗函数、聚合函数
开窗函数是在 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> 可为列表达式、标量子查询、标量函数或用户定义的变量。

浙公网安备 33010602011771号