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

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

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

题目:

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

法一:窗口函数

select emp_no,salary,dense_rank() over(order by salary desc)
from salaries
WHERE to_date = '9999-01-01' 
ORDER BY salary DESC, emp_no ASC

法二:count 相关子查询

降序排名:比工资大的有几个,就是排第几

SELECT
  s1.emp_no,
  s1.salary,
  (SELECT  COUNT(DISTINCT s2.salary)
   FROM salaries s2
   WHERE s2.to_date = '9999-01-01'
        AND s2.salary >= s1.salary) AS rank
from salaries s1
where s1.to_date = '9999-01-01'
ORDER BY s1.salary DESC

法三:count 表连接

select s1.emp_no,s1.salary,count(distinct s2.salary)
from salaries s1 join salaries s2 
where s1.salary <= s2.salary 
      and s1.to_date='9999-01-01' 
      and s2.to_date='9999-01-01'  #给定s1.salary求有多少个s2.salary大于它
group by s1.emp_no,s1.salary
order by s1.salary desc,s1.emp_no asc
全部评论

相关推荐

当初高考报计算机真是造大孽了啊!卷的飞起!哪都是计算机的人,考研,考公,找工作全他奶的计算机的人,太难了。国企也是。关键一届比一届卷,造大孽了!
_Lyrics_:因为计算机,没有体验到快乐的大学研究生时光,好不容易修完课程就要出去实习,看着别人专业可以一起搓麻将,游山玩水,而我却要自己一个人住在北上不到十平米的出租屋,每天两点一线
点赞 评论 收藏
分享
lllllkin:感觉可以精简到一页简历,有些排版感觉不是必须的。 时间线越早的,你自己越熟悉的放前面。描述可以更精简些,一些问题解决感觉可以不用写具体技术栈,卖个关子,等面试官问。
点赞 评论 收藏
分享
Ncsbbss:又想干活又想要工资,怎么什么好事都让你占了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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