row_number()
当前分区内的行数。行按照窗口定义中order by子句定义的顺序从1开始编号,否则按任意顺序编号。
rank()
每组中第一个对等体的row_number()-当前有间隙的行的排名。如果没有ORDER BY子句,则所有行都被视为对等行,此函数始终返回1。
dense_rank()
当前行在其分区内的对等组的数量——当前行的排名,没有间隙。行按照窗口定义中order by子句定义的顺序从1开始编号。如果没有ORDER BY子句,则所有行都被视为对等行,此函数始终返回1。
percent_rank()
尽管有这个名字,这个函数总是返回一个介于0.0和1.0之间的值,等于(rank-1)/(partition lines-1),其中rank是内置窗口函数rank()返回的值,partition rows是分区中的总行数。如果分区只包含一行,则此函数返回0.0。
cume_dist()
累积分布。按行号/分区行计算,其中行号是row_number()为组中最后一个对等体返回的值,分区行是分区中的行数。
ntile(N)
参数N作为整数处理。此函数将分区尽可能均匀地划分为N个组,并按照order by子句定义的顺序或其他任意顺序为每个组分配一个1到N之间的整数。如有必要,首先出现较大的群体。此函数返回分配给当前行所属组的整数值。
lag(expr)
lag(expr, offset)
lag(expr, offset, default)
lag()函数的第一种形式返回对分区中的前一行计算表达式expr的结果。或者,如果没有前一行(因为当前行是第一行),则为NULL。
如果提供了offset参数,则它必须是非负整数。在这种情况下,返回的值是根据分区内当前行之前的行偏移行计算expr的结果。如果offset为0,则对当前行计算expr。如果当前行之前没有行偏移行,则返回NULL。
如果还提供了默认值,那么如果偏移量标识的行不存在,则返回默认值而不是NULL。
lead(expr)
lead(expr, offset)
lead(expr, offset, default)
lead()函数的第一种形式返回对分区中下一行计算表达式expr的结果。或者,如果没有下一行(因为当前行是最后一行),则为NULL。
如果提供了offset参数,则它必须是非负整数。在这种情况下,返回的值是对分区内当前行之后的行偏移行计算expr的结果。如果offset为0,则对当前行计算expr。如果当前行之后没有行偏移行,则返回NULL。
如果还提供了默认值,那么如果偏移量标识的行不存在,则返回默认值而不是NULL。
first_value(expr)
此内置窗口函数以与聚合窗口函数相同的方式计算每行的窗口框架。它返回针对窗口框架中每一行的第一行计算的expr值。
last_value(expr)
此内置窗口函数以与聚合窗口函数相同的方式计算每行的窗口框架。它返回针对窗口框架中每一行的最后一行计算的expr值。
nth_value(expr, N)
此内置窗口函数以与聚合窗口函数相同的方式计算每行的窗口框架。它返回根据窗口帧的第N行计算的expr值。如果有order by子句定义的顺序,则窗口框架内的行从1开始编号,否则按任意顺序编号。如果分区中没有第N行,则返回NULL。