RANK 函数

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

语法

RANK 函数

用法

行的等级定义为 1 加上排在该行的等级前面的行数。如果两行或多行有相同的值,则这些行也得到相同的等级。结果在连续的分了等级的值的序列中可有间隔。例如,如果将两行分为等级 1,则下一等级为 3。对于包括非唯一的值的分等级的行,DENSE_RANK 函数使用不同的规则。

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

示例:RANK 函数

下列查询按照销售人员的销售量对他们分等级。这些等级不是连续的,因为销售量相同的人员都指定相同的等级值,且跳过下一等级值。

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