+——+————+
| Id | Salary |
+——+————+
| 1 | 100 |
| 2 | 200 |
| 3 | 300 |
+——+————+
例如上述 Employee 表,n = 2 时,应返回第二高的薪水 200。如果不存在第 n 高的薪水,那么查询应返回 null。
+————————————+
| getNthHighestSalary(2) |
+————————————+
| 200 |
+————————————+
答案:
CREATE FUNCTION getNthHighestSalary(N INT) RETURNS INT
BEGIN
declare M INT;
SET M=N -1; #若直接使用limit N-1 报错,因此需申明一个变量辅助
RETURN (
# Write your MySQL query statement below.
select distinct salary from Employee order by salary DESC limit M,1 #查找第M条之后第1条数据
);
END