dense_rank 排名窗口函数

适用于:check marked yes Databricks SQL check marked yes Databricks Runtime

返回某个值相对于分区中所有值的排名。

语法

dense_rank()

参数

此函数没有参数。

返回

一个 INTEGER。

该窗口函数的 OVER 子句必须包含一个 ORDER BY 子句。 与 rank 排名窗口函数不同,dense_rank 不会在排名序列中产生间隙。 与 row_number 排名窗口函数不同,dense_rank 不会中断关联。 如果该顺序不独一无二,则重复项会共享同一个相对较后的位置。

示例

> 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