第二高的薪水--sql查詢
阿新 • • 發佈:2019-01-09
LEETCODE題目:編寫一個 SQL 查詢,獲取 Employee
表中第二高的薪水(Salary) 。
+----+--------+ | Id | Salary | +----+--------+ | 1 | 100 | | 2 | 200 | | 3 | 300 | +----+--------+
例如上述 Employee
表,SQL查詢應該返回 200
作為第二高的薪水。如果不存在第二高的薪水,那麼查詢應返回 null
。
+---------------------+ | SecondHighestSalary | +---------------------+ | 200 | +---------------------+
解題思路:先對Salary進行排序(降序),然後選擇第二高的資料
1.使用子查詢和限定條件
select (
select DISTINCT Salary //去重
from Employee
ORDER BY Salary DESC //降序排列
limit 1 offset 1 //從第一條資料讀取(offset 1 ,但不包括第一條),往後讀取一條資料(limit 1 ),即第二條;
) as SecondHightestSalary;
2.使用IFFULL語句和LIMIT語句
select
IFFULL(
( select DISTINCT Salary
from Employee
ORDER BY Salary DESC
limit 1 offset 1),NULL
) as SecondHightestSalary;
// IFFULL函式:
IFFULL(A,B),如果A存在則返回A,否則返回B。