DENSE_RANK 函数

DENSE_RANK 函数是一个 OLAP 分等级函数,为 OLAP window 中的每一行计算等级值。返回值是一个顺序编号,其基于在 OVER 子句中所需要的 ORDER BY 表达式。

语法

DENSE_RANK 函数

用法

将一行的等级定义为 1 加上该行的等级前面的等级数目。如果两行或多行有相同的值,则这些行得到相同的等级。然而,与 RANK 函数相反,如果两行或多行同级,则在分等级的值的序列中没有间隔。例如,如果两行都分等级为 1,则下一等级仍为 2。

此函数没有参数,但必须指定空的圆括号。如果 OVER 子句指定可选的 window PARTITION 子句,则在每一 window 分区定义的行的子集之内计算 DENSE_RANK 等级。

示例:DENSE_RANK 函数

下列查询按照销售人员的销售量对他们分等级。即使多个销售量有相同的等级,等级也是连续的。

SELECT emp_num, sales,
        DENSE_RANK() OVER (ORDER BY sales) AS dense_rank,
        FROM sales;
        
        emp_num      sales   dense_rank
        
        101      2,000      1
        102      2,400      2
        103      2,400      2
        104      2,500      3
        105      2,500      3
        106      2,650      4
1 请参阅 OLAP window 表达式的 OVER 子句