编写一个 SQL 查询,获取 Employee 表中第 n 高的薪水(Salary)。
|----|--------|
Id |
Salary |
1 |
100 |
2 |
200 |
3 |
300 |
---- |
-------- |
例如上述 Employee 表,n = 2 时,应返回第二高的薪水 200。如果不存在第 n 高的薪水,那么查询应返回 null。
|------------------------|
getNthHighestSalary(2) |
200 |
------------------------ |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| CREATE FUNCTION getNthHighestSalary(N IN NUMBER) RETURN NUMBER IS result NUMBER; BEGIN select( SELECT SecondHighestSalary FROM ( select Salary SecondHighestSalary,ROWNUM num from(select distinct Salary from Employee order by Salary desc)) WHERE num=N) SecondHighestSalary into result from dual;
RETURN result; END;
CREATE FUNCTION getNthHighestSalary(N IN NUMBER) RETURN NUMBER IS result NUMBER; BEGIN select max(salary) into result from( select salary,dense_rank() over(order by salary desc) as rn from employee) where rn = n; RETURN result; END;
|
本文系原创文章,转载请注明来自葬瞳飘血的个人博客
@copyright 葬瞳飘血