RANK
更新时间:2025-10-16
描述
RANK() 是一个窗口函数,用于返回有序数据集中值的排名。排名从 1 开始按顺序递增。当出现相同值时,这些值获得相同的排名,但会导致排名序列出现间隔。例如,如果前两行并列排名第 1,则下一个不同的值将排名第 3(而不是第 2)。
语法
SQL
1RANK()
返回值
返回 BIGINT 类型的排名值。对于相同的值返回相同的排名,但会在序列中产生间隔。
举例
SQL
1SELECT
2 department,
3 employee_name,
4 salary,
5 RANK() OVER (
6 PARTITION BY department
7 ORDER BY salary DESC
8 ) as salary_rank
9FROM employees;
Text
1+------------+---------------+--------+-------------+
2| department | employee_name | salary | salary_rank |
3+------------+---------------+--------+-------------+
4| Sales | Alice | 10000 | 1 |
5| Sales | Bob | 10000 | 1 |
6| Sales | Charlie | 8000 | 3 | -- 注意这里是 3 而不是 2
7| IT | David | 12000 | 1 |
8| IT | Eve | 11000 | 2 |
9| IT | Frank | 11000 | 2 |
10| IT | Grace | 9000 | 4 | -- 注意这里是 4 而不是 3
11+------------+---------------+--------+-------------+
在这个例子中,数据按部门分区,并在每个部门内根据工资进行排名。当出现相同工资时(如 Alice 和 Bob、Eve 和 Frank),它们获得相同的排名,但会导致后续排名出现间隔。
