176_Second Highest Salary
+----+--------+
| Id | Salary |
+----+--------+
| 1 | 100 |
| 2 | 200 |
| 3 | 300 |
+----+--------++---------------------+
| SecondHighestSalary |
+---------------------+
| 200 |
+---------------------+Solution
# solution 1
SELECT max(Salary) as SecondHighestSalary
FROM Employee
WHERE Salary < (SELECT max(Salary) FROM Employee)
# solution 2: easy to generalize to nth largest
SELECT
(SELECT distinct Salary
FROM Employee
ORDER BY Salary DESC
LIMIT 1 OFFSET 1) as SecondHighestSalary;
# solution 3: use ifnull()
SELECT IFNULL((SELECT DISTINCT salary
FROM employee
ORDER BY salary desc
LIMIT 1 OFFSET 1), null) as SecondHighestSalary
;Note
Last updated