sql rank() 函数可对查询结果按给定列进行排名,返回每个行的相对位置。它可用于分区排名,具有重复值时跳过排名,并返回 null 值行的 null 排名。
SQL RANK() 函数用法
SQL RANK() 函数用于对查询结果进行排名,可以为每行分配一个排名值。排名值表示该行在结果集中的相对位置。
语法
RANK() OVER (PARTITION BY partition_expression ORDER BY order_expression)
参数
- partition_expression (可选):将结果集划分为不同的分区,并对每个分区内的行进行排名。如果不指定,则对整个结果集进行排名。
- order_expression:指定用于排序的列,排名将基于此列的值。
功能
RANK() 函数返回一个数字,表示该行在结果集中的排名。它具有以下特点:
- 具有相同值的行将获得相同的排名。
- 如果有重复的行,它们的排名将相同,但后续行将跳过这些排名(例如,如果一行排在第 3 位,并且下一行与之相等,那么下一行的排名将是第 5 位)。
- 对于具有 NULL 值的行,它们的排名将为 NULL。
示例
以下示例演示了对员工表中的员工按工资进行排名:
SELECT employee_id, employee_name, salary, RANK() OVER (ORDER BY salary DESC) AS rank_by_salary FROM employees;
结果
employee_id | employee_name | salary | rank_by_salary |
---|---|---|---|
1 | John Smith | 1000 | 1 |
2 | Jane Doe | 900 | 2 |
3 | Mark Jones | 800 | 3 |
4 | Mary Johnson | 700 | 4 |
5 | David Green | 700 | 4 |
在这个示例中,John Smith 排在第一位,因为他的工资最高。Jane Doe 排在第二位,因为她的工资低于 John Smith。Mark Jones 排在第三位,依此类推。注意,Mary Johnson 和 David Green 的工资相同,因此他们获得相同的排名(第 4 位)。
以上就是sql rank函数怎么用的详细内容,更多请关注CTO智库其它相关文章!