【SQL20】查询第二高的薪水
查询第二高的薪水
编写一个 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】查询第二高的薪水相关推荐
- 数据库-查询第二高的薪水
数据库查询-第二高的薪水 题目:第二高的薪水 编写一个SQL查询,获取Employee表中第二高的薪水(Salary). 例如上述 Employee 表,SQL查询应该返回 200 作为第二高的薪水. ...
- MySQL语句第二高的薪水查询
查询第二高的薪水,如果只有一条记录,则返回NULL select IFNULL((select distinct salary from employee order by salary desc L ...
- LEETCODE--mysql查询第二高薪水
题目: Employee 表: +-------------+------+ | Column Name | Type | +-------------+------+ | id | ...
- 第二高的薪水--sql查询
LEETCODE题目:编写一个 SQL 查询,获取 Employee 表中第二高的薪水(Salary) . +----+--------+ | Id | Salary | +----+-------- ...
- 编写一个SQL查询,获取Employee表中第二高的薪水(Salary)
单选 class X{Y y=new Y();public X(){System.out.print("X");} } class Y{public Y(){System.out. ...
- leetcode176. 第二高的薪水(SQL)
编写一个 SQL 查询,获取 Employee 表中第二高的薪水(Salary) . +----+--------+ | Id | Salary | +----+--------+ | 1 | 10 ...
- LeetCode-MySQL-174. 第二高的薪水
编写一个 SQL 查询,获取 Employee 表中第二高的薪水(Salary) . +----+--------+ | Id | Salary | +----+--------+ | 1 | 100 ...
- 176. 第二高的薪水(SQL中的ifnull函数和limt1,1的使用)
176. 第二高的薪水 # Write your MySQL query statement below Select ifnull((SELECT distinct salaryfrom Emplo ...
- LeetCode 176 第二高的薪水
SQL架构 Employee 表: +-------------+------+ | Column Name | Type | +-------------+------+ | id | int | ...
最新文章
- 二十二、插值查找算法
- pyglet wave.Error: file does not start with RIFF id
- iptables 实际操作 之 规则查询 2
- 基本算法个人PHP 实现(四)
- 关联矩阵古林法的matlab代码,[转载][原创]灰色关联分析及Matlab程序实现
- 吴恩达神经网络和深度学习-学习笔记-30-相关符号和计算+单层卷积网络+简单卷积网络示例
- 贺利坚老师汇编课程73笔记:键盘输入的处理过程
- vim中自动格式化代码
- Axure RP 8.0安装和汉化
- 三角函数的思维导图(上)
- 【HAVENT原创】kubernetes docker 常用指令
- 二手车之家业务缓存应用实战
- 计算机机械硬盘上的一个扇区容量,计算机外设之——机械硬盘
- 基于JAVAWeb前端开发技术儿童教育网站计算机毕业设计源码+数据库+lw文档+系统+部署
- 进出队C语言不用链表,C语言面试题总汇简要
- win7虚拟机使用nat模式配置静态IP上网
- C++中的typeid关键字
- 料箱输送线程序,有合流和分拣,个人认为精华部分是WCS和PLC的Socket接口和分拣控制程序
- C++ STL(八) -------- unordered_set、unordered_map的介绍+使用+比较
- 电子产品可靠性测试标准