【Leetcode】Mysql查询第二高的薪水

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

+—-+——–+
| Id | Salary |
+—-+——–+
| 1 | 100 |
| 2 | 200 |
| 3 | 300 |
+—-+——–+
例如上述 Employee 表,SQL查询应该返回 200 作为第二高的薪水。如果不存在第二高的薪水,那么查询应返回 null。

+———————+
| SecondHighestSalary |
+———————+
| 200 |
+———————+

# 这里不描述union,not in等方法,sql语句优化很重要
# 方法一:118ms, 从小于最高工资中找最高的工资,找出来就是第二高的工资
# select max(Salary) as SecondHighestSalary from Employee where Salary<(select max(Salary) from Employee)
# 方法二:
# 234ms,IFNULL,如果不为空返回第一个参数,为空返回null,降序后limit是关键,从第一条开始取,取一条,就是第二高工资
select IFNULL((select Distinct Salary from Employee order by Salary DESC limit 1,1),null) as SecondHighestSalary 

猜你喜欢

转载自blog.csdn.net/chenhua1125/article/details/80341803