题目描述
有一个薪水表 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 方面的文章,如果感兴趣的话可以点个关注不迷路哦~。

2021

被折叠的 条评论
为什么被折叠?



