「SQL面试题库」是由 不是西红柿 发起,全员免费参与的SQL学习活动。我每天发布1道SQL面试真题,从简单到困难,涵盖所有SQL知识点,我敢保证只要做完这100道题,不仅能轻松搞定面试,代码能力和工作效率也会有明显提升。
题目介绍: 第N高的薪水 nth-highest-salary
难度中等
编写一个 SQL 查询,获取
Employee
表中第 n 高的薪水(Salary)。
+----+--------+
| Id | Salary |
+----+--------+
| 1 | 100 |
| 2 | 200 |
| 3 | 300 |
+----+--------+
例如上述
Employee
表, n = 2 时,应返回第二高的薪水
200
。如果不存在第 n 高的薪水,那么查询应返回
null
+------------------------+
| getNthHighestSalary(2) |
+------------------------+
| 200 |
+------------------------+
sql
CREATE FUNCTION getNthHighestSalary(N INT) RETURNS INT
BEGIN
RETURN (
SELECT IFNULL(
(select salary
from(
select salary,
rank() over(order by salary desc) rk
from Employee
group by salary
)t1
where rk=N),NULL) SecondHighestSalary
);
END