假设有如下所示的员工薪水表:

找出表中最高的薪水非常简单,编写下面的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高的薪水相关推荐

  1. MySQL: 查询出student表中每门课都大于80分的学生姓名

    查询出student表中每门课都大于80分的学生姓名 说明(小技能):获取某学生它所有课程的分数最小的一科min(score) > 80 进行分析比较即可, 连分数最小的一科都大于80分,那其他 ...

  2. 【SQL】从一张考勤表tb_cwa中找出员工每天的上班、下班打卡具体时间

    从一张考勤表tb_cwa中找出员工每天的上班.下班打卡具体时间 考勤表相关字段如下下:ID.NAME.NO.TIME ID NAME NO TIME 1 zhangsan 1001 2020-01-0 ...

  3. mysql查询员工表中所有员工入职20个月之后的日期_Mysql基础教程

    往期推荐 2020黑马Python教程 Docker基础知识 网易云课堂2019 Java高级教程 郭术生AE教程 SQL语句分类 DDL:数据定义语言,用来定义数据库对象:库.表.列等 DML:数据 ...

  4. 如何快速找出一个数组中最大数和第二大数

    看到一道题是:快速找出一个数组中最大数和第二大数. 我之前学了一些数组排序,例如冒泡排序,简单选择排序等等,然后我就想可不可以利用冒泡排序来实现呢?之前写过冒泡排序实现从小到大的排列,那么可以改成从大 ...

  5. 快速找出一个数组中的最大数、第二大数

    http://blog.csdn.net/hackbuteer1/article/details/8035261#comments 快速找出一个数组中的最大数.第二大数 思路:如果当前元素大于最大数 ...

  6. [基础题]1.快速找出一个数组中的最大数、第二大数。

    [基础题]1.快速找出一个数组中的最大数.第二大数. package HomeWork_10;public class Test_01 {public static void main(String[ ...

  7. 2022-12-05:部门工资前三高的所有员工。编写一个SQL查询找出每个部门中收入前三高的员工 。 +------------+----------+--------+ | Department |

    2022-12-05:部门工资前三高的所有员工.编写一个SQL查询找出每个部门中收入前三高的员工 . ±-----------±---------±-------+ | Department | Em ...

  8. mysql获取多张表中的数据_mysql 之多表查询

    阅读目录 一 介绍 二 多表连接查询 三 符合条件连接查询 四 子查询 五 综合练习 一 介绍 本节主题 多表连接查询 复合条件连接查询 子查询 首先说一下,我们写项目一般都会建一个数据库,那数据库里 ...

  9. python counter 出现次数最少的元素_[PY3]——找出一个序列中出现次数最多的元素/collections.Counter 类的用法...

    问题 怎样找出一个序列中出现次数最多的元素呢? 解决方案 collections.Counter 类就是专门为这类问题而设计的, 它甚至有一个有用的 most_common() 方法直接给了你答案 c ...

最新文章

  1. linux下 为自己编写的程序 添加tab自动补全 功能
  2. 发那科karel机器人环境配置_湖北轻工职业技术学院-FANUC机器人授权培训中心正式授牌...
  3. Python--一些重要的小tips【持续更新】
  4. sdut 3333 数据结构实验之栈与队列六:下一较大值(二)
  5. 数据中心如何利用虚拟现实(VR)技术
  6. 现在还有哪些价值 100 亿美金的产品机会?
  7. python删除链表中重复的节点_Java编程删除链表中重复的节点问题解决思路及源码分享...
  8. mysql的事务隔离级别
  9. 学习 (2012.01)
  10. Charles for Mac(抓包工具)
  11. 《结对-网页贪吃蛇游戏-需求分析》
  12. 华为鸿蒙主题设计,2020华为全球主题设计大赛,简直就是神仙打架啊!
  13. ad建集成库_手把手教你创建自己的Altium Designer集成元件库
  14. 计算机关机怎么按,按什么键电脑关机
  15. 使用Mediapipe制作抖音特效
  16. 爱奇艺埋点投递治理实践
  17. 首个“中国籍”曲妥珠单抗于欧盟获批上市
  18. 创业时也要读下这十本经典书
  19. 成长笔记4:教育是什么
  20. C语言实现计算机网络技术

热门文章

  1. 李翔敏:城市停车管理的五点困境、六大展望与三项思考
  2. 软件测试费用是多少,国内软件检测机构排名
  3. 应用层操作gpio的3种方法之一:通过sysfs文件系统
  4. 小试牛刀 python股票查询程序
  5. 基于python 的股票行情查询系统开发(一)
  6. 第1章 Linux系统介绍与环境搭建准备
  7. 参考文献中各字母的含义
  8. Fluent边界条件设定方法
  9. 南信大的计算机科学与技术专业,南信大计算机科学与技术、测绘工程专业通过中国工程教育专业认证...
  10. chrome浏览器手机版怎么设置中文