题解 | #对所有员工的薪水按salary降序进行排名#

对所有员工的薪水按照salary降序进行1-N的排名

https://www.nowcoder.com/practice/b9068bfe5df74276bd015b9729eec4bf

SELECT *
FROM 
    (SELECT 
        emp_no,
        salary,
        DENSE_RANK() OVER(ORDER BY salary DESC) AS t_rank
    FROM salaries) AS ranked_salary
ORDER BY   
	t_rank, 
	emp_no

解题思路两步:

1.对salary排序:

使用DENSE_RANK() 和OVER()窗口函数

2.解决相同salary时使用emp_no排序的问题:

如果直接修改OVER()为DENSE_RANK() OVER(ORDER BY salary DESC,emp_no) AS t_rank

则会导致两个相同salary的行有不同排名

因此要将第一步中的视图变成一个table,然后再去排序

全部评论

相关推荐

昨天 16:55
已编辑
北京工业大学 Java
211本,找日常实习的话,如果面向中厂的话,需要刷hot100么?因为之前从来没刷过,算法仅限于学校课程水平,准备3月投递简历,现在还需要背八股文,时间有些紧张,还需要刷算法题么?同时什么样的公司可以算是中厂呢?
程序员小白条:中大厂说的上名字的,必定要算法,hot100只是最基础的了,题库远不止100题捏,一般在300-400题量之间,算法=学校课程=简单题也做不出,多准备八股文和算法吧,其他项目可以放放,精刷算法就行了,花时间成长很快的
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务