Labels

Tuesday, March 3, 2015

Second Highest Salary

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.


Naive Way: My naive way is to first find the max(salary), exclude it from all salary, and then select the max from the rest. It nested two sub-queries.

 SELECT MAX(Salary)  
 FROM  
 (SELECT Salary   
 FROM Employee  
 WHERE Salary <>  
 (SELECT MAX(Salary)   
 FROM Employee)) E;  

Improved Way: Select the max from those with salary less than max(Salary)

 SELECT MAX(Salary)  
 FROM Employee  
 WHERE Salary <  
 (SELECT MAX(Salary)   
 FROM Employee);  

No comments:

Post a Comment