SQL练习23:对所有员工的当前薪水按照salary进行按照1-N的排名
题目描述
- 题目描述
- 考察知识点
- 解题思路
有一个薪水表 salaries
简况如下: 对所有员工的薪水按照
salary
降序进行 1-N 的排名,要求相同 salary
并列且按照 emp_no
升序排列:
窗口函数 DENSE_RANK()
,ORDER BY
。
根据题目的要求,可以使用窗口函数进行排序。
SELECT emp_no, salary, DENSE_RANK() OVER(ORDER BY salary DESC)
FROM salaries
三种排序的窗口函数:
RANK()
在排序时,若有相同位次,会跳过这些位次进行排序。 例如,有3条数据排在第1位时,排序为:1,1,1,4······DENSE_RANK()
在计排序时,若存在相同位次,不会跳过之后的位次。 例如,有3条数据排在第1位时,排序为:1,1,1,2······ROW_NUMBER()
这个函数赋予唯一的连续位次。 例如,有3条数据排在第1位时,排序为:1,2,3,4······
题目来源:牛客网-SQL数据库实战题
✅ 每日打卡,❤ 点个赞再走吧!!!❤ 后续会继续分享 Mysql 方面的文章,如果感兴趣的话可以点个关注不迷路哦~。