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

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

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

我的方法:窗口函数

select emp_no,salary,dense_rank()over(order by salary desc) t_rank from salaries order by t_rank,emp_no

法二:不用group by,子查询可跟在select后面

select s2.emp_no,s2.salary,(select count(distinct s1.salary) from salaries s1 where s1.salary>=s2.salary)t_rank from salaries s2 
order by s2.salary desc,emp_no

法三:自连接+group by

select t1.emp_no, t1.salary, count( distinct t2.salary) as t_rank
from salaries t1,salaries t2 
where t1.salary <= t2.salary
group by t1.emp_no,t1.salary
order by t1.salary desc, t1.emp_no
SQL题解 文章被收录于专栏

主要是为自己做个笔记

全部评论

相关推荐

07-10 11:08
门头沟学院 Java
投递京东等公司10个岗位
点赞 评论 收藏
分享
Lorn的意义:你这标个前端是想找全栈吗?而且项目确实没什么含金量,技术栈太少了,边沉淀边找吧 现在学院本想就业好一点四年至少得高三模式两年加油吧
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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