使用oracle实现获取第N高薪水

编写一个 SQL 查询,获取 Employee 表中第 n 高的薪水(Salary)。

+----+--------+
| Id | Salary |
+----+--------+
| 1 | 100 |
| 2 | 200 |
| 3 | 300 |
+----+--------+

例如上述 Employee 表,n = 2 时,应返回第二高的薪水 200。如果不存在第 n 高的薪水,那么查询应返回 null

+------------------------+
| getNthHighestSalary(2) |
+------------------------+
| 200 |
+------------------------+

 

网上有很多关于mysql的编写方法,oracle的几乎找不到,我如果有比我编写方法好的欢迎评论

CREATE FUNCTION getNthHighestSalary(N IN NUMBER) RETURN NUMBER IS

result NUMBER;

BEGIN

/* Write your PL/SQL query statement below */

select salary into result

from (select salary,rownum as rn

from

(select DISTINCT salary from employee order by salary desc)

)

where rn = N;

RETURN result;

END;

posted @ 2018-10-11 11:28  亓星星  阅读(928)  评论(0编辑  收藏  举报