RANK 函数是一个 OLAP 分等级函数,为 OLAP window 中的每一行计算分等级的值。返回值是一个顺序编号,其基于 OVER 子句中所需要的 ORDER BY 表达式。
行的等级定义为 1 加上排在该行的等级前面的行数。如果两行或多行有相同的值,则这些行也得到相同的等级。结果在连续的分了等级的值的序列中可有间隔。例如,如果将两行分为等级 1,则下一等级为 3。对于包括非唯一的值的分等级的行,DENSE_RANK 函数使用不同的规则。
RANK 函数没有参数,但必须指定空的圆括号。如果 OVER 子句指定可选的 window PARTITION 子句,则在每一分区定义的行的子集内计算等级。
下列查询按照销售人员的销售量对他们分等级。这些等级不是连续的,因为销售量相同的人员都指定相同的等级值,且跳过下一等级值。
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