176. Second Highest Salary
by Botao Xiao
176. Second Highest Salary
Question
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 query should return 200 as the second highest salary. If there is no second highest salary, then the query should return null.
+———————+ | SecondHighestSalary | +———————+ | 200 | +———————+
Thinking:
- Method:
- 使用limit, order by, ifnull组合
- ifnull的使用方法
- select ifnull(expression1, expression2) newname;
- 如果expression1是null,则显示expression1,而字段名是newname。
# Write your MySQL query statement below
select IFNULL(
(select distinct
Salary
from
Employee
order by
Salary desc
limit
1, 1), NULL) SecondHighestSalary;
- Method 2:
- 两次查询,先查出最大值,再通过not in查出第二大的值。
select
max(Salary) as SecondHighestSalary
from
Employee
where
Salary
not in(
select max(Salary) from Employee
)
二刷
- 通过子查询实现筛选出第二大的数。
- 通过IFNULL判断,如果不存在则填写NULL。
- 使用DISTINCT去重。
# Write your MySQL query statement below
SELECT IFNULL(
(SELECT distinct Salary
FROM Employee
ORDER BY Salary desc limit 1,1)
, null) as SecondHighestSalary ;
Subscribe via RSS