1. 程式人生 > >LeetCode.176. 第二高的薪水

LeetCode.176. 第二高的薪水

在這裡插入圖片描述

思路1:

即降序排序後取第二個。這裡難搞的是空值情況。最後使用isnull函式,如果選擇為空,則返回為空。

程式碼1:

SELECT
	ifnull( ( SELECT DISTINCT Salary FROM Employee ORDER BY Salary DESC LIMIT 1 OFFSET 1 ), NULL ) AS SecondHighestSalary;

思路2:

第二高薪水即最高薪水以下的最高薪水。

SELECT MAX(Salary) AS SecondHighestSalary
FROM Employee
WHERE Salary < (SELECT MAX(Salary) FROM Employee);

分析:

第一種更加直觀,但是一般而言,排序耗時要多於取最大值耗時。因此在時間與空間上都是第二種更好。