「力扣数据库」176. 第二高的薪水(第二天)

176. 第二高的薪水

题目

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

IdSalary
1100
2200
3300

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

SecondHighestSalary
200

解题

步骤

  1. 首先将Salary中的数据去重,使用到 DISTINCT :
    SELECT DISTINCT Salary FROM Employee
  2. 再将Salary中的数据按降序排列:
    SELECT DISTINCT Salary FROM Employee ORDER BY Salary DESC
  3. 按照分页的思想是一页一条数据,使用到 LIMIT, 第二高的薪水则在第二页:
    SELECT DISTINCT Salary FROM Employee ORDER BY Salary DESC LIMIT 1, 1
  4. 考虑极端情况:没有第二薪水,则为空!使用 IFNULL 判断:
    SELECT IFNULL( (SELECT DISTINCT Salary FROM Employee ORDER BY Salary DESC LIMIT 1, 1),null) AS SecondHighestSalary

代码

SELECT IFNULL((SELECT DISTINCT Salary From Employee
                        ORDER BY Salary DESC
                        LIMIT 1,1),NULL) AS SecondHighestSalary 

「力扣数据库」181. 超过经理收入的员工(第三天)
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值