# 9.22.窗口功能
窗口功能提供跨与当前查询行相关的行集执行计算的能力。看见第3.5节有关此功能的介绍,以及第4.2.8节语法细节。
中列出了内置窗口功能表9.62.注意这些功能必须可以使用窗口函数语法调用,即结束
条款是必需的。
除这些函数外,任何内置或用户定义的普通聚合(即非有序集合或假设集合聚合)都可以用作窗口函数;看见第9.21节查看内置聚合的列表。聚合函数仅在结束
第条紧随号召;否则,它们将充当普通聚合,并为整个集合返回一行。
表9.62.通用窗口功能
列出的所有功能表 9.62取决于指定的排序顺序订购方式
相关窗口定义的子句。仅考虑订购方式
据说列是同行.四个排名函数(包括cume_dist
) 被定义,以便它们为对等组的所有行给出相同的答案。
注意第一个值
,最后一个值
, 和nth_value
只考虑“窗口框架”内的行,默认情况下包含从分区开始到当前行的最后一个对等点的行。这可能会给最后一个值
有时也nth_value
.您可以通过添加合适的框架规范来重新定义框架(范围
,行
或者组
) 到超过
条款。看第 4.2.8 节有关框架规格的更多信息。
当聚合函数用作窗口函数时,它聚合当前行窗口框架内的行。与一起使用的聚合订购方式
并且默认的窗口框架定义会产生一种“运行总和”类型的行为,这可能是也可能不是我们想要的。要获得整个分区的聚合,请省略订购方式
或使用前无界和后无界之间的行
.可以使用其他框架规格来获得其他效果。
# 笔记
SQL 标准定义了一个尊重空值
或者忽略空值
选项带领
,落后
,第一个值
,最后一个值
, 和nth_value
.这在 PostgreSQL 中没有实现:行为总是与标准的默认值相同,即尊重空值
.同样,该标准的从一开始
要么从最后
选项nth_value
未实现:只有默认从一开始
支持行为。(你可以达到的结果从最后
通过扭转订购方式
订购。)