题解 | #对所有员工的薪水按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,然后再去排序

全部评论

相关推荐

KPLACE:首先是板面看起来不够,有很多奖,比我厉害。项目要精减,大概详细描述两到三个,要把技术栈写清楚,分点,什么算法,什么外设,怎么优化,不要写一大堆,分点,你写上去的目的,一是让别人知道你做了这个知识点,然后在面试官技术面的时侯,他知道你会这个,那么就会跟你深挖这个,然后就是个人评价改为专业技能
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务