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.
Corner case:
Case 1: There is only one row in the table. Then I need return a null.
Case 2: There are more than one row that have highest Salary value, so the second highest salary isn’t the second one in order using “ORDER BY”. Then I will use “DISTINCT”.
select max(Salary) as SecondHighestSalary from
(
select distinct Salary from Employee order by Salary desc limit 1,1
)
as a;