Window函数提供跨与当前查询行相关的行集执行计算的能力。请参见第3.5节有关此功能的介绍,以及第4.2.8节了解语法详细信息。
内置窗口功能列于表9.57注意这些功能必须使用窗口函数语法调用,即超过
子句是必需的。
除这些函数外,任何内置或用户定义的通用或统计聚合(即非有序集或假设集聚合)都可以用作窗口函数;看见第9.20节获取内置聚合的列表。聚合函数仅在超过
催缴后的条款;否则,它们将充当非窗口聚合,并返回整个集合的一行。
表9.57.通用窗口功能
功能 |
退货类型 |
描述 |
row_number() |
bigint公司 |
分区内当前行的编号,从1开始计算 |
等级() |
bigint公司 |
当前有间隙行的秩;等同于行_编号 它的第一个同行 |
密度_等级() |
bigint公司 |
当前行的秩(无间隙);此函数用于统计对等组 |
百分比等级(_rank) |
双精度 |
当前行的相对排名:(等级 -1)/(总分区行数-1) |
cume_dist() |
双精度 |
累计分布:(当前行之前或与当前行对等的分区行数)/总分区行数 |
直到(num_buckets(桶数) 整数 ) |
整数 |
从1到参数值的整数,尽可能等分分区 |
滞后,滞后(价值 任何元素 [,抵消 整数 [,违约 任何元素 ]]) |
与相同类型价值 |
收益价值 在以下行进行计算抵消 分区内当前行之前的行;如果没有这样的行,则返回违约 (必须与价值 ). 两者都有抵消 和违约 根据当前行进行计算。如果省略,抵消 默认为1和违约 至零 |
铅(价值 任何元素 [,抵消 整数 [,违约 任何元素 ]]) |
与相同类型价值 |
收益价值 在以下行进行计算抵消 分区内当前行之后的行;如果没有这样的行,则返回违约 (必须与价值 ). 两者都有抵消 和违约 根据当前行进行计算。如果省略,抵消 默认为1和违约 到null |
第一个值(价值 任何 ) |
与相同类型价值 |
收益价值 在窗口框架的第一行处计算 |
last_value(最后一个值)(价值 任何 ) |
与相同类型价值 |
收益价值 在窗口框架的最后一行计算 |
第n个值(价值 任何 ,第n个 整数 ) |
与相同类型价值 |
收益价值 在作为第n个 窗框的行(从1开始计算);如果没有这样的行,则为null |
中列出的所有功能表9.57取决于订购依据
关联窗口定义的子句。仅考虑订购依据
柱据说是同龄人四种排名功能(包括cume_dist文件
)定义为对所有对等行给出相同的答案。
请注意第一个值
,last_value(最后一个值)
、和第n个值
只考虑“窗框”,默认情况下包含从分区开始到当前行的最后一个对等点的行。这可能会给以下方面带来无益的结果last_value(最后一个值)
有时也会第n个值
。您可以通过添加合适的框架规范来重新定义框架(范围
或排
)到超过
条款。请参见第4.2.8节有关帧规格的更多信息。
当聚合函数用作窗口函数时,它将聚合当前行窗口框架中的行。与一起使用的聚合订购依据
默认的窗口框架定义生成“流动资金”行为类型,这可能是也可能不是我们想要的。要获得整个分区的聚合,请省略订购依据
或使用前无边界和后无边界之间的行
。可以使用其他框架规格来获得其他效果。
注释
SQL标准定义了尊重虚无
或IGNORE NULLS公司
的选项领导
,滞后
,第一个值
,last_value(最后一个值)
、和第n个值
。这在中未实现PostgreSQL:行为始终与标准的默认值相同,即尊重虚无
同样,标准从第一个
或从最后开始
的选项第n个值
未实现:仅默认从第一个
支持行为。(您可以实现自上次
通过反转订购依据
订购。)
cume_dist文件
计算小于或等于当前行及其对等行的分区行的分数,而百分比银行
计算小于当前行的分区行的分数,假设当前行不存在于分区中。