表: Employee
+-------------+------+ | Column Name | Type | +-------------+------+ | id | int | | salary | int | +-------------+------+ 在 SQL 中,id 是该表的主键。 该表的每一行都包含有关员工工资的信息。
查询 Employee
表中第 n
高的工资。如果没有第 n
个最高工资,查询结果应该为 null
。
查询结果格式如下所示。
示例 1:
输入: Employee table: +----+--------+ | id | salary | +----+--------+ | 1 | 100 | | 2 | 200 | | 3 | 300 | +----+--------+ n = 2 输出: +------------------------+ | getNthHighestSalary(2) | +------------------------+ | 200 | +------------------------+
示例 2:
输入: Employee 表: +----+--------+ | id | salary | +----+--------+ | 1 | 100 | +----+--------+ n = 2 输出: +------------------------+ | getNthHighestSalary(2) | +------------------------+ | null | +------------------------+
我的解答:
CREATE FUNCTION getNthHighestSalary(N INT) RETURNS INT
BEGIN
-- 定义整型M
DECLARE M INT;
-- 因为返回结果集的索引值从0开始,所以查询第N高对应索引应为索引N-1对应的结果
SET M = N-1;
RETURN (
-- 去重
SELECT DISTINCT salary
FROM Employee
-- 将去重结果倒序,即从高到低
ORDER BY salary DESC
-- 每页1条数据,返回第M页的数据
LIMIT M,1
);
END
标签:salary,--,Employee,+----+--------+,id,+------------------------+,SQL,177,LeetCod From: https://blog.csdn.net/qq_40878316/article/details/143939097