1.4 KiB
1.4 KiB
layout, title, last_solved, category, leetcode_url, status
| layout | title | last_solved | category | leetcode_url | status |
|---|---|---|---|---|---|
| page | SQL - Second Highest Salary (limit/offset + ifnull) | sql | https://leetcode.com/problems/second-highest-salary | Attempted |
Problem
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 |
+---------------------+
Solution
Normally something like this is sufficient if you just use the limit and offset clause.
{% highlight sql %}
select distinct salary as SecondHighestSalary from employee order by salary desc limit 1 offset 1
{% endhighlight %}
Without limit, the resultset is
300
200
100
- offset chooses the one you want and puts it on the top
- limit just selects the top one
But we also have to use the ifnull( if this is null , return this value ) clause
{% highlight sql %}
select ifnull(
(select distinct salary as SecondHighestSalary
from employee
order by salary desc
limit 1 offset 1)
,
null
) as SecondHighestSalary
{% endhighlight %}