DENSE_RANK 函数是一个 OLAP 分等级函数,为 OLAP window 中的每一行计算等级值。返回值是一个顺序编号,其基于在 OVER 子句中所需要的 ORDER BY 表达式。
将一行的等级定义为 1 加上该行的等级前面的等级数目。如果两行或多行有相同的值,则这些行得到相同的等级。然而,与 RANK 函数相反,如果两行或多行同级,则在分等级的值的序列中没有间隔。例如,如果两行都分等级为 1,则下一等级仍为 2。
此函数没有参数,但必须指定空的圆括号。如果 OVER 子句指定可选的 window PARTITION 子句,则在每一 window 分区定义的行的子集之内计算 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