[LeetCode-SQL-Easy]176. 第二高薪水

weixin_34236497發表於2018-04-01

問題:

寫一個 SQL 查詢語句,獲取 Employee表中第二高的Salary 。

列名 型別
Id int
Salary int
Id Salary
1 100
2 200
3 300

例如, 上面給出的 Employee 表,查詢應該返回 200 作為第二高的Salary。如果沒有第二高的Salary,那麼查詢應該返回 null。

SecondHighestSalary
200

分析:

這個需要一點一點的來寫,其實也不難
①先寫基本的查詢語句,並且用別名 AS 來自定義查詢出的列名。
②然後使用distinct來排除重複的元素
③用Order By 來排序,預設是從小到大,那麼我們加個 Desc
④limit 1限制我們只需要一個值,offset 1讓我們從第二個元素開始算
⑤用ifNull(expr1,expr2)函式,來使查詢不到的變為null。這裡注意一下別名需要換一下地方。

最後是這樣的:

SELECT IFNULL(
            (SELECT DISTINCT Salary 
                            FROM Employee ORDER BY Salary LIMIT 1 OFFSET 1),NULL) 
                                        as SecondHighestSalary

相關文章