所有员工的当前(to_date='9999-01-01')薪水按照salary进行按照1-N的排名

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

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

不使用窗口函数

-- rank排名:查询表中大于自己薪水的员工的数量(考虑并列:去重)
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,
  s1.emp_no ;

使用窗口函数

SELECT 
  emp_no,
  salary,
  dense_rank () over (
ORDER BY salary DESC) AS `rank` 
FROM
  salaries 
WHERE to_date = '9999-01-01' ;
全部评论
`rank`,这里必须要加引号吗,试了不加引号的报错了
1 回复 分享
发布于 2020-11-09 20:54
SELECT COUNT(DISTINCT s2.salary) FROM salaries s2 WHERE s2.to_date = '9999-01-01' AND s2.salary >= s1.salary s2.sal>=s1.sal,看第一条数据,大于等于88958的只有它本身,所以distinct不起作用,接着count计算出只有一条数据,所以输出 1,即排第一, 看第二条数据,大于等于72527的有三条,分别是88958,72527,72527,取出进行distinct,得88958,72527,接着count计算,得2,因此输出 2,即排第二。 之后的数据依此类推。
7 回复 分享
发布于 2022-03-05 20:49
s2.salary >= s1.salary这句啥意思啊
3 回复 分享
发布于 2021-04-22 09:43
使用窗口函数的方法是不是漏了按emp_no升序排这个条件?
2 回复 分享
发布于 2021-03-09 21:10
as 后面的rank一定要加引号,否则报错
1 回复 分享
发布于 2022-12-05 15:46 山西
不适用窗口函数的方法我改写为自连接了 select s1.emp_no, s1.salary, count(distinct s2.salary) as 'rank' from salaries s1, salaries s2 where s1.salary <= s2.salary group by s1.emp_no,s1.salary order by s1.salary desc
1 回复 分享
发布于 2021-12-26 17:44
因为用的是count去统计去重后的数量,大于等于最大值的只有一个(它本身),大于等于第二大值有两个(最大值和它本身),以此类推实现排序效果
1 回复 分享
发布于 2021-05-31 15:20
真流弊
点赞 回复 分享
发布于 2022-09-07 14:47 黑龙江
子查询可以调用外部查询吗
点赞 回复 分享
发布于 2021-12-31 16:34
s2.salary >= s1.salary 这个的作用是什么呀 想不明白..求解释
点赞 回复 分享
发布于 2021-08-03 10:05
我做的和你一样
点赞 回复 分享
发布于 2021-07-19 14:48

相关推荐

07-11 11:15
中南大学 Java
好可爱的hr姐姐哈哈哈哈
黑皮白袜臭脚体育生:兄弟们貂蝉在一起,吕布开了
点赞 评论 收藏
分享
Twilight_m...:表格简历有点难绷。说说个人看法: 1.个人基本情况里好多无意义信息,什么婚姻状况、健康状况、兴趣爱好、户口所在地、身份证号码、邮政编码,不知道的以为你填什么申请表呢。 2.校内实践个人认为对找工作几乎没帮助,建议换成和测开有关的项目,实在没得写留着也行。 3.工作经历完全看不出来是干什么的,起码看着和计算机没啥关系,建议加强描述,写点你在工作期间的实际产出、解决了什么问题。 4.个人简述大而空,看着像AI生成,感觉问题最大。“Python,C,C++成为我打造高效稳定服务的得力工具”、“我渴望凭借自身技术知识与创新能力,推动人工智能技术的应用发展,助力社会实现智能化转型”有种小学作文的美感。而且你确定你个人简述里写的你都会嘛?你AI这块写的什么“深入研究”,发几篇顶会的硕博生都不一定敢这么写。而且你AI这块的能力和软测也完全无关啊。个人简述建议写你对哪些技术栈、哪些语言、哪些生产工具的掌握,写的有条理些,而且最好是和测开强相关的。
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-11 17:10
什么素质,我请问呢,要掉小珍珠了。。。又憋屈又生气
苍蓝星上艾露:给它们能的,一群dinner牛马挥刀向更弱者罢了。我写的开源求职AI co-pilot工具,优化你的简历,找到你匹配的岗位,定制你的简历,并让你做好面试准备https://github.com/weicanie/prisma-ai
点赞 评论 收藏
分享
评论
108
16
分享

创作者周榜

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