Sqlite内建Window 函数
libai 发布于 2024-12-02

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。

李白
关注 私信
文章
14
关注
0
粉丝
0