176. 第二高的薪水
题目描述
编写一个 SQL 查询,获取 Employee 表中第二高的薪水(Salary) 。
Id | Salary |
---|---|
1 | 100 |
2 | 200 |
3 | 300 |
例如上述 Employee 表,SQL查询应该返回 200 作为第二高的薪水。如果不存在第二高的薪水,那么查询应返回 null。
SecondHighestSalary |
---|
200 |
实现
ifnull函数:ifnull(v1, v2):如果v1不为null,返回v1,否则返回v2
实现1
select ifnull(
(select distinct e.Salary
from Employee e
where (select count(distinct e2.Salary) from Employee e2
where e.Salary < e2.Salary) = 1),
null
) SecondHighestSalary
实现2
select ifnull(
(select distinct Salary from Employee
order by Salary desc limit 1, 1),
null
) SecondHighestSalary;