MySQL: 找出员工表中最高、第二高、第N高的薪水
假设有如下所示的员工薪水表:
找出表中最高的薪水非常简单,编写下面的SQL即可:
SELECT max(Salary) as HighestSalary
FROM Employee;
利用查询的嵌套,也可以较为容易地找出表中第二高的薪水:
SELECT max(Salary)
FROM Employee WHERE Salary < (SELECT max(Salary) FROM Employee);
不过,要是我们想找出第三高、第四高的薪水呢?有的人可能会说按照上面的思路,在SQL语句的外层再嵌套查询,不过这样写起来很麻烦,并且嵌套太多的子查询会影响性能。采用下面的SQL语句是个更好的选择:
SELECT Salary FROM Employee ORDER BY Salary DESC LIMIT 1,1;
其中LIMIT 1,1
也可以写成LIMIT 1 OFFSET 1
,事实上后面的写法更好。LIMIT N OFFSET M
代表从第M+1行开始取N行。要求第三高、第四高、第N高的薪水,只需要将末尾改成LIMIT 1 OFFSET N-1
即可。
针对第N高的薪水这类问题,我们还可以自定义函数来解决。
CREATE FUNCTION getNthHighestSalary(N INT) RETURNS INT
BEGIN
DECLARE M INT;
SET M=N-1;RETURN (SELECT DISTINCT Salary FROM Employee ORDER BY Salary DESC LIMIT 1 OFFSET M);
END
注意,求第N高的薪水实际上是把表排序后偏移N-1行,因此需要先把N的值减1存在M中。
MySQL: 找出员工表中最高、第二高、第N高的薪水相关推荐
- MySQL: 查询出student表中每门课都大于80分的学生姓名
查询出student表中每门课都大于80分的学生姓名 说明(小技能):获取某学生它所有课程的分数最小的一科min(score) > 80 进行分析比较即可, 连分数最小的一科都大于80分,那其他 ...
- 【SQL】从一张考勤表tb_cwa中找出员工每天的上班、下班打卡具体时间
从一张考勤表tb_cwa中找出员工每天的上班.下班打卡具体时间 考勤表相关字段如下下:ID.NAME.NO.TIME ID NAME NO TIME 1 zhangsan 1001 2020-01-0 ...
- mysql查询员工表中所有员工入职20个月之后的日期_Mysql基础教程
往期推荐 2020黑马Python教程 Docker基础知识 网易云课堂2019 Java高级教程 郭术生AE教程 SQL语句分类 DDL:数据定义语言,用来定义数据库对象:库.表.列等 DML:数据 ...
- 如何快速找出一个数组中最大数和第二大数
看到一道题是:快速找出一个数组中最大数和第二大数. 我之前学了一些数组排序,例如冒泡排序,简单选择排序等等,然后我就想可不可以利用冒泡排序来实现呢?之前写过冒泡排序实现从小到大的排列,那么可以改成从大 ...
- 快速找出一个数组中的最大数、第二大数
http://blog.csdn.net/hackbuteer1/article/details/8035261#comments 快速找出一个数组中的最大数.第二大数 思路:如果当前元素大于最大数 ...
- [基础题]1.快速找出一个数组中的最大数、第二大数。
[基础题]1.快速找出一个数组中的最大数.第二大数. package HomeWork_10;public class Test_01 {public static void main(String[ ...
- 2022-12-05:部门工资前三高的所有员工。编写一个SQL查询找出每个部门中收入前三高的员工 。 +------------+----------+--------+ | Department |
2022-12-05:部门工资前三高的所有员工.编写一个SQL查询找出每个部门中收入前三高的员工 . ±-----------±---------±-------+ | Department | Em ...
- mysql获取多张表中的数据_mysql 之多表查询
阅读目录 一 介绍 二 多表连接查询 三 符合条件连接查询 四 子查询 五 综合练习 一 介绍 本节主题 多表连接查询 复合条件连接查询 子查询 首先说一下,我们写项目一般都会建一个数据库,那数据库里 ...
- python counter 出现次数最少的元素_[PY3]——找出一个序列中出现次数最多的元素/collections.Counter 类的用法...
问题 怎样找出一个序列中出现次数最多的元素呢? 解决方案 collections.Counter 类就是专门为这类问题而设计的, 它甚至有一个有用的 most_common() 方法直接给了你答案 c ...
最新文章
- linux下 为自己编写的程序 添加tab自动补全 功能
- 发那科karel机器人环境配置_湖北轻工职业技术学院-FANUC机器人授权培训中心正式授牌...
- Python--一些重要的小tips【持续更新】
- sdut 3333 数据结构实验之栈与队列六:下一较大值(二)
- 数据中心如何利用虚拟现实(VR)技术
- 现在还有哪些价值 100 亿美金的产品机会?
- python删除链表中重复的节点_Java编程删除链表中重复的节点问题解决思路及源码分享...
- mysql的事务隔离级别
- 学习 (2012.01)
- Charles for Mac(抓包工具)
- 《结对-网页贪吃蛇游戏-需求分析》
- 华为鸿蒙主题设计,2020华为全球主题设计大赛,简直就是神仙打架啊!
- ad建集成库_手把手教你创建自己的Altium Designer集成元件库
- 计算机关机怎么按,按什么键电脑关机
- 使用Mediapipe制作抖音特效
- 爱奇艺埋点投递治理实践
- 首个“中国籍”曲妥珠单抗于欧盟获批上市
- 创业时也要读下这十本经典书
- 成长笔记4:教育是什么
- C语言实现计算机网络技术