1. 程式人生 > >第二高的薪水--sql查詢

第二高的薪水--sql查詢

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。