LEETCODE数据库:177.第N高薪水

题目

编写一个 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
CREATE FUNCTION getNthHighestSalary(N INT) RETURNS INT
BEGIN
SET N=N-1;
RETURN (
# Write your MySQL query statement below.
SELECT(
SELECT DISTINCT Salary
FROM Employee
ORDER BY Salary DESC
LIMIT N,1 )
);
END

注意

  • 与176不同在于N可变,limit后面不能使用表达式,需要提前处理好N的数值