查询第二高的薪水

编写一个 SQL 查询,获取Employee 表中第二高的薪水(Salary)

id      salary
1       100
2       200
3       300

例如上述 Employee 表,SQL查询应该返回 200 作为第二高的薪水。如果不存在第二高的薪水,那么查询应返回 null。

结果如下:
200

解决:
首先来看看常用排序函数之间的数据是什么样的

select salary,row_number() over(order by salary)       as rn,rank() over(order by salary)             as rankn,dense_rank() over(order by salary)       as dense_rnfrom salary
;
salary  rn  rankn   dense_rn
100     1   1       1
100     2   1       1
200     3   3       2
200     4   3       2
300     5   5       3
300     6   5       3

由此也可以看出row_number、rank和dense_rank的区别:
row_number会给每行数据生成一个序号,每个序号都不一样,不管排序字段值是否相同;
rank也是每行生成一个序号,区别在如果排序字段值相同的话,其序号一样,整体的序号不连续,即会跳跃序号;
dense_rank也是每行生成一个序号,如果排序字段值相同的话,其序号一样,但其整体的序号是连续的,即不会跳跃序号;

最后的SQL:

select salaryfrom (select salary,dense_rank() over(order by salary) as dense_rnfrom salary)awhere dense_rn = 2group by salary
;
200

考虑以后如果有同样的薪水,这样就不能使用row_number函数了,所以这次使用了dense_rank函数

备注:建表和数据
create table salary(id int,salary int);

insert into salary values(1,100);
insert into salary values(2,200);
insert into salary values(3,300);
insert into salary values(4,200);
insert into salary values(5,300);

【SQL20】查询第二高的薪水相关推荐

  1. 数据库-查询第二高的薪水

    数据库查询-第二高的薪水 题目:第二高的薪水 编写一个SQL查询,获取Employee表中第二高的薪水(Salary). 例如上述 Employee 表,SQL查询应该返回 200 作为第二高的薪水. ...

  2. MySQL语句第二高的薪水查询

    查询第二高的薪水,如果只有一条记录,则返回NULL select IFNULL((select distinct salary from employee order by salary desc L ...

  3. LEETCODE--mysql查询第二高薪水

    题目: Employee 表: +-------------+------+ | Column Name | Type | +-------------+------+ | id          | ...

  4. 第二高的薪水--sql查询

    LEETCODE题目:编写一个 SQL 查询,获取 Employee 表中第二高的薪水(Salary) . +----+--------+ | Id | Salary | +----+-------- ...

  5. 编写一个SQL查询,获取Employee表中第二高的薪水(Salary)

    单选 class X{Y y=new Y();public X(){System.out.print("X");} } class Y{public Y(){System.out. ...

  6. leetcode176. 第二高的薪水(SQL)

    编写一个 SQL 查询,获取 Employee 表中第二高的薪水(Salary) . +----+--------+ | Id | Salary | +----+--------+ | 1  | 10 ...

  7. LeetCode-MySQL-174. 第二高的薪水

    编写一个 SQL 查询,获取 Employee 表中第二高的薪水(Salary) . +----+--------+ | Id | Salary | +----+--------+ | 1 | 100 ...

  8. 176. 第二高的薪水(SQL中的ifnull函数和limt1,1的使用)

    176. 第二高的薪水 # Write your MySQL query statement below Select ifnull((SELECT distinct salaryfrom Emplo ...

  9. LeetCode 176 第二高的薪水

    SQL架构 Employee 表: +-------------+------+ | Column Name | Type | +-------------+------+ | id | int | ...

最新文章

  1. 二十二、插值查找算法
  2. pyglet wave.Error: file does not start with RIFF id
  3. iptables 实际操作 之 规则查询 2
  4. 基本算法个人PHP 实现(四)
  5. 关联矩阵古林法的matlab代码,[转载][原创]灰色关联分析及Matlab程序实现
  6. 吴恩达神经网络和深度学习-学习笔记-30-相关符号和计算+单层卷积网络+简单卷积网络示例
  7. 贺利坚老师汇编课程73笔记:键盘输入的处理过程
  8. vim中自动格式化代码
  9. Axure RP 8.0安装和汉化
  10. 三角函数的思维导图(上)
  11. 【HAVENT原创】kubernetes docker 常用指令
  12. 二手车之家业务缓存应用实战
  13. 计算机机械硬盘上的一个扇区容量,计算机外设之——机械硬盘
  14. 基于JAVAWeb前端开发技术儿童教育网站计算机毕业设计源码+数据库+lw文档+系统+部署
  15. 进出队C语言不用链表,C语言面试题总汇简要
  16. win7虚拟机使用nat模式配置静态IP上网
  17. C++中的typeid关键字
  18. 料箱输送线程序,有合流和分拣,个人认为精华部分是WCS和PLC的Socket接口和分拣控制程序
  19. C++ STL(八) -------- unordered_set、unordered_map的介绍+使用+比较
  20. 电子产品可靠性测试标准

热门文章

  1. axios发送post报错404问题
  2. ubuntu18 + QT + 动态库创建和调用+Plain C++ Aplication
  3. 关于RHEL支持T10 PI的情况
  4. Linux服务器怎么封ip,linux 封IP的方法 防cc攻击
  5. Outlook邮箱已经发出的邮件怎么撤回或重发替换
  6. 加勒比考试委员会将向24,000名候选人发放区块链证书
  7. GEI步态能量图生成
  8. C# 获取当前时间戳(正确版)
  9. iOS 12.3开发者版更新,iOS上划关闭动画回来了
  10. IOS 常用开源框架