LEETCODE数据库:176.第二高薪水

题目

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

Id Salary
1 100
2 200
3 300

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

SecondHighestSalary
200

解答

1
2
3
4
5
6
# Write your MySQL query statement below
SELECT(
SELECT DISTINCT Salary SecondHighestSalary
FROM Employee
ORDER BY Salary DESC
Limit 1,1) AS SecondHighestSalary;

注意

  • limit x,y为显示第x行往后的的y行(包括第x行,序号从0开始)
  • 由于存在多个最高薪水,DISTINCT是必要的
  • 外围再加一个select是因为没有第二高薪水时要输出null

其他解法

1
2
3
4
#通过子查询去掉最大数再查询最大数
SELECT max(Salary) SecondHighestSalary
FROM Employee
where Salary != (select max(Salary) from Employee );