Database LeetCode Second Highest Salary

题目:

Write a SQL query to get the second highest salary from the Employee table.

+----+--------+
| Id | Salary |
+----+--------+
| 1  | 100    |
| 2  | 200    |
| 3  | 300    |
+----+--------+

For example, given the above Employee table, the second highest salary is 200. If there is no second highest salary, then the query should return null.

题意:

给定一个员工表,其中有员工的Id和薪水,那么需要筛选出薪水第二高的值,如果没有找到第二高的薪水,那么就返回null。也就是如果没找到,则返回如下:

+-------------------------+

SecondHighestSalary

                          null

+-------------------------+

而不是返回Empty Set.

此题一开始我是这么写的:

select Salary as SecondHighestSalary from Employee group by Salary order by Salary desc limit 1,1;

这样写,就会出现一个问题,如果碰到没发现第二高的薪水,那么查询返回的结果直接就是Empty set。而题目中要求的是,返回的是null。后来看了一篇博客和discuss about this,发现其实针对null这个问题,MySQL语句还有另外的一个检测方式就是用 IFNULL来判断是否返回是null。所以博主顺便就脑补了下关于这个IFNULL的知识。

IFNULL(exp1,exp2);如果exp1不为null,则返回exp1;否则就返回exp2。

select IFNULL((select Salary from Employee group by Salary order by Salary desc limit 1,1),null) as SecondHighestSalary;


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值