写在前面
-
难度:简单
题目+
编写一个 SQL 查询,获取 Employee 表中第二高的薪水(Salary) 。
思路
对于oracle很容易就想到下面的做法
select salary as SecondHighestSalary from (
select salary,rownum as rn
from (select salary from employee order by salary desc ))
where rn=2
貌似也没毛病。但其实毛病很大,很多 如果不存在第二高的薪水,分2种情况,一种是就1条记录,一种是SAL就一个。 那你根据ROWNUM就无法得到。
SELECT MAX(Salary) as SecondHighestSalary FROM Employee
WHERE Salary!=(SELECT MAX(Salary) FROM Employee )
这个思路貌似没问题,但在oracle中提交总是超时,我也不明所以。Mysql下提交通过的。
有没有其他方法呢?肯定有。