Leetcode 176. Second Highest Salary (Database)

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 second highest salary is 200. If there is no second highest salary, then the query should return null.

思路:解法1.找出最高的salary, 所有小于最高salary中的最大值就是第二高的salary。

# Write your MySQL query statement below
select max(Salary) as SecondHighestSalary from Employee 
where Salary < (select max(Salary) from Employee)

解法2. 参考 http://tsuinte.ru/2015/04/05/leetcode-database-176-second-highest-salary

构造一个tmp,从里面选,如果tmp为空则返回null

1 # Write your MySQL query statement below
2 select 
3     if(count(Salary) >= 1, Salary, null) as SecondHighestSalary 
4 from (select distinct salary from Employee 
5 order by Salary desc limit 1,1) tmp

 

posted @ 2017-01-16 13:53  lettuan  阅读(435)  评论(0编辑  收藏  举报