row_number 排名窗口函数

适用于:Databricks SQL check marked yes Databricks Runtime

根据窗口分区中的行顺序,为每一行分配唯一的顺序编号(从 1 开始)。

语法

row_number()

参数

该函数不接受任何参数。

返回

INTEGER

该窗口函数的 OVER 子句必须包含 ORDER BY 子句。 与 rankdense_rank 不同,row_number 打破平局。

如果顺序不是唯一的,则结果是不确定的。

示例

> SELECT a,
         b,
         dense_rank() OVER(PARTITION BY a ORDER BY b),
         rank() OVER(PARTITION BY a ORDER BY b),
         row_number() OVER(PARTITION BY a ORDER BY b)
    FROM VALUES ('A1', 2), ('A1', 1), ('A2', 3), ('A1', 1) tab(a, b);
 A1 1   1   1   1
 A1 1   1   1   2
 A1 2   2   3   3
 A2 3   1   1   1