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

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

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

select emp_no, salary, DENSE_RANK() over(order by salary desc) as t_rank
from salaries
ORDER BY t_rank, emp_no;

这道题最难的地方在于,之前没有学过排名函数。

下面介绍几种排名方法。

-- 分数相同时,排名不同
row_number()
select salary, row_number() over(order by salary) from salaries;

-- 分数相同时,排名相同,但是后续排名不连贯
rank()
select salary, rank() over(order by salary) from salaries;

-- 分数相同时,排名相同,后续排名连贯
dense_rank()
select salary, dense_rank() over(order by salary) from salaries;

-- 分数相同时,排名亦不同
ntile(n)
select salary, ntile(5) over(order by salary) from salaries;

这四种方法各有不同,在多实践掌握吧。

MySQL试题答案解析 文章被收录于专栏

MySQL在线编程重点试题解析

全部评论

相关推荐

点赞 评论 收藏
分享
生命诚可贵:先不说内容怎么样 排版就已经太差劲了 第一眼看不到重点,第二眼已经没有再看的耐心了, 篇幅占的太满了 字体不要用灰色 观感不好 想重点突出的黑色加粗就可以了 多列要点 少些大段的句子 项目经历把项目用的技术要点列出来,光写个python plc什么的太宽泛了 自我评价也有点偏多
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务