LeetCode.176. 第二高的薪水

LeetCode.176. 第二高的薪水_第1张图片

思路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);

分析:

第一种更加直观,但是一般而言,排序耗时要多于取最大值耗时。因此在时间与空间上都是第二种更好。

你可能感兴趣的:(Leetcode,SQL)