欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

SQL 查询,求第二高的薪水(Salary)

程序员文章站 2022-07-07 09:45:34
...

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

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

±--------------------+
| SecondHighestSalary |
±--------------------+
| 200 |
±--------------------+

解决思路:

select tmp.id,tmp.salary
from (
select *,rank() over(order by salary desc) as rk from employee) tmp
where tmp.rk=2
union all
select null as id,null as salary where not exists(
select *,rank() over(order by salary desc) as rk from employee having rk=2)