获取当前薪水第二多的员工的emp_no以及其对应的薪水

该文章主要记录在学习SQL的过程,觉得比较好的一个SQL题,作为记录学习。

题目背景:

请你获取薪水第二多的员工的emp_no以及其对应的薪水salary,

若有多个员工的薪水为第二多的薪水,则将对应的员工的emp_no和salary全部输出,并按emp_no升序排序。

数据集如下;

有一个薪水表salaries简况如下:

emp_no salaryfrom_date to_date
10001889582002-06-229999-01-01
10002725272001-08-029999-01-01
10003433112001-12-019999-01-01

如下提供三种方法,其中第一种方法明显有缺陷,仅供参考学习,也避免避坑。

第一种方法:该方法为错误的解决方案

select emp_no,salary
from salaries
where to_date = '9999-01-01'
order by salary desc limit 1,1   
//salary降序排列,从1+1的位置取一个记录

第二种方法:通过去重的方式,对salary进行去重的方式排序后,再筛选。

select emp_no, salary from salaries
where to_date = '9999-01-01' and salary = 
(select distinct salary from salaries order by salary desc limit 1,1) 

第三种方法:通过使用排序窗口函数,该方法为自己在测试的时候用的,测试通过。

select f.emp_no,f.salary from 
(select emp_no, salary,dense_rank()over(order by salary desc )
as emp_num from salaries ) f where f.emp_num = 2 

注意:以下提供两种方法,限定在不能使用排序函数order by的情况进行,故上述的两种方法又不能使用。

第四种方法:通过建立多次的子查询。

selcet  s.emp_no,s.salary  from salaries s 
where s.salary =                   
(selcet  max(s.salary) from salaries s where s.salary <       #定位出第二大的薪水信息
(select max(s.salary) from salaries)                          #定位出第一大的薪水信息

这种方法适合TOP查询,一旦多了之后,子查询的次数过多,是该方法的弊端。

第五种方法:该方法稍微烧脑一些,用到的方法为表的自连接。在讲述表的自连接时,先说明下表连接的几种方式,参考文章。逐步演示其过程

1)源数据表如下:

emp_no salaryfrom_date to_date
10001889582002-06-269999-01-01
10002725272001-08-029999-01-01
10003433112001-12-019999-01-01
10004740572001-11-279999-01-01

2)表的自连接(交叉连接查询)select * from salary s1 ,salary s2;

 3)select * from salary s1 ,salary s2 where s1.salary<=s2.salary;在自连接的情况下,定位出比自己大的那部分数据。

 4)在通过分组的方式,count统计在每个组的数量(由于每个组下,自连接表里的数据都是大于等于自己的,虽然自连接表2中没有进行排序,但通过计数统计却能实现在当前组别下,自己是第几,因为自己总是在最后一名)。

select s1.salary,s1.emp_no,count(distinct s2.salary) as emp_num 
from salary s1 ,salary s2 where s1.salary<=s2.salary group by s1.salary;

最后在通过where查询得出我们想要的结果。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/56581.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

获取所有部门中员工薪水最高的相关信息

获取所有部门中员工薪水最高的相关信息 题目题目分析错误答案____max 函数 和selectlistagg 函数的其他用法之后再补充 题目补充 题目 有一个员工表dept_emp简况如下: 有一个薪水表salaries简况如下: 获取所有部门中员工薪水最高的相关信息&#xff0c;给出dept_no, emp_no…

我为何选择 IB?有什么优势?

小众的项目&#xff0c;却有着海量的资讯&#xff0c;令人百思不得其解。靠谱的和不靠谱的谈IB的文章汗牛充栋。既然有这么多的资料&#xff0c;本以为子女读IB的家长都了解这种教育的内涵和细节&#xff0c;实践中却意外的发现很多家长都并没有搞清楚IB是什么。 转载文章&…

写跨文化交际的论文,有哪些好的题目推荐?

在我们写论文的时候&#xff0c;有许多小伙伴的专业可能是先在国内培养&#xff0c;然后再去国外培养一年。或者是本身的专业就是跨文化的专业&#xff0c;例如语言类专业。这种情况的话&#xff0c;我们在写论文的时候推荐写关于跨文化交际的论文。 这类论文是怎么个选题和写…

面试题,谈谈一款APP的优缺点,并提出改进建议

今天微信上有个小伙伴向我问了一道面试题&#xff0c;题目是&#xff1a;谈一谈某一款产品的优缺点&#xff0c;并且说一下如果你作为该产品的产品经理&#xff0c;你会如何优化&#xff1f;该题目在应届生求职产品经理和初级产品经理面试中比较常见。也有很多变种&#xff0c;…

Edge浏览器和Google浏览器占用内存情况

最近发现适用edge浏览器看视频时&#xff0c;或者打开多个网页&#xff0c;电脑就会变得非常卡顿&#xff0c;打开任务管理器发现内存占用较多&#xff0c;网上也有人说edge浏览器确实占用内存较多。但是给出的解决方案是更新windows系统&#xff0c;这个方法显然不能接受&…

华为matebook和linux版本区别,对比了解华为MateBook 14的优劣势

对比了解华为MateBook 14的优劣势 2019-05-25 23:00:00 107点赞 93收藏 30评论 发这个帖子的起因&#xff0c;是五一假期那会儿&#xff0c;我从华为商城抢了台华为Matebook 14。巧的是&#xff0c;我发小也买了台笔记本&#xff0c;从联想商城入的小新Air142019&#xff0c;高…

24 年前的 IE 仍能在 Win10中运行,这无敌兼容性与你的代码比比?

点击上方蓝色“程序猿DD”&#xff0c;选择“设为星标” 回复“资源”获取独家整理的学习资料&#xff01; 作者 | oschina 来源 | https://www.oschina.net/news/112731/backwards-compatibility-for-the-win-ie-2-0 集合&#xff01;随我一起搞台 Macbook Pro 如何&#xff1…

Java:接口和抽象类,傻傻分不清楚?

再来聊聊接口和抽象类。 01、抽象类和接口的区别 来看网络上对接口的一番解释&#xff1a; 接口&#xff08;英文&#xff1a;Interface&#xff09;&#xff0c;在 Java 编程语言中是一个抽象类型&#xff0c;是抽象方法的集合。一个类通过继承接口的方式&#xff0c;从而来继…

css弹性布局和网格布局

css布局 一、知识补充 1. 浮动的特性 只会影响后面的元素文本不会被浮动元素覆盖&#xff08;浮动的特性就是图文混合&#xff09;具备内联盒子特性&#xff1a;宽度由内容决定具备块级盒子特性&#xff1a;支持所有样式浮动放不下&#xff0c;会自动折行 template: <d…

系统架构师(二)案例题

目录 一、软件结构设计 &#xff08;一&#xff09;软件质量属性 &#xff08;二&#xff09;风险&#xff0c;敏感点&#xff0c;权衡点 二、结构化软件系统建模 &#xff08;一&#xff09;流程图和数据流图 &#xff08;二&#xff09;实体和类的区别 &#xff08;三…

链表的定义和使用

1.链表概念&#xff1a; 链表是一种物理存储结构上非连续存储结构&#xff0c;数据元素的逻辑顺序是通过链表中的引用链接次序实现的。 //通俗的说&#xff1a;链表就是由一个个节点组成&#xff0c;这些节点逻辑上连续&#xff0c;物理上不连续&#xff09; 2.链表的类型&am…

做一个Python颜值打分系统,比比看杨幂和杨超越到底谁更美?

下面就来讲讲我设计的这套颜值打分系统,先上图片让大家看一下效果,比如看一下我的女神杨幂的颜值如何: 怎么样,结果是相当的精准吧,大家是不是已经跃跃欲试了呢?下面就针对该颜值打分系统进行讲解。 01. 注册百度API 该系统最为核心的部分就是颜值的打分,这里其实是直…

二叉树的定义和使用

1.二叉树概念&#xff1a; 树的定义&#xff1a; 树是一种抽象数据类型&#xff0c;用来模拟具有树状结构性质的数据集合。它是由n&#xff08;n>0&#xff09;个有限节点通过连接它们的边组成一个具有层次关系的集合&#xff08;根朝上&#xff0c;而叶朝下&#xff09;。…

量化交易入门先看这几种常见的策略分类

量化交易的本质是对数据的处理和内在规律的探索&#xff0c;本文简要概括了市场上常见的量化策略类型&#xff0c;并给出了对应的例子。希望能帮助大家构建对量化策略的整体认识。 一起开始今天的学习吧~ 涉及到的市场 主要指传统二级市场&#xff0c;一般指股票二级市场和期…

QMT量化交易软件使用攻略(二)-策略编写

【策略编辑器】是迅投专门为模型开发者设计的&#xff0c;集成了模型列表、函数列表、函数帮助、模型基本信 息、参数设置、回测参数等多个部分&#xff0c;拥有代码高亮、自动补全等便捷功能于一体的便捷的模型编辑、 开发环境 编写 Python 策略需在开始时定义编码格式&#x…

电脑如何剪辑视频?自学视频剪辑的朋友看过来

相比于手机来说&#xff0c;很多专业人士喜欢在电脑剪辑视频多一点&#xff0c;毕竟电脑的配置高&#xff0c;很多专业的视频剪辑、制作工具都是要在电脑上使用的。现在&#xff0c;有越来越多人加入到这个行业中来&#xff0c;在短视频行业中要想持续发展的话&#xff0c;不掌…

推荐几个方法教你学会怎样制作视频剪辑

随着时代的发展&#xff0c;新媒体行业的壮大&#xff0c;应该不少小伙伴每天都需要制作视频剪辑吧&#xff0c;有些可能是因为从事短视频行业&#xff0c;每天就需要发送视频内容&#xff0c;才能吸引观众&#xff0c;也有些可能只是想单纯分享一些生活视频。那你知道如何制作…

视频剪辑怎么自学?其实剪辑很简单

视频剪辑怎么自学&#xff1f;现如今短视频发展十分迅速&#xff0c;几乎人人都在参与其中。相信大家在日常生活中也是会拍摄一些好看好玩的视频的。那么我们在整理视频的时候也是可以将其剪辑成一段好看的片段的。可能很多小伙伴们还不是很清楚剪辑视频的方法&#xff0c;这里…

毕业季 拍大师教你制作另类毕业视频

又是一年的毕业季&#xff0c;各路亲朋好友、师弟师妹们都过来围观&#xff0c;让青春的末班车留下了很多动人又雷人的画面。一琢磨&#xff0c;用拍大师把这段青春的美好回忆做成了一个MV视频&#xff0c;打上离别时想对童鞋们说的话&#xff0c;定格的回忆画面瞬间让童鞋们泪…