题目难度
中等
题目描述
编写一个 SQL 查询,获取 Employee 表中第 n 高的薪水(Salary)。
例如上述 Employee 表,n = 2 时,应返回第二高的薪水 200。如果不存在第 n 高的薪水,那么查询应返回 null。
正确答案
CREATE FUNCTION getNthHighestSalary(N INT) RETURNS INT
BEGIN
DECLARE X INT;
SET X = N-1;
RETURN(
SELECT IFNULL(
(
SELECT DISTINCT salary
FROM Employee
ORDER BY salary DESC
LIMIT X,1
)
,NULL)
);
END
分析
- 想找第n名,就跨过前n-1个人取1人
- 注意使结果返回null
知识点
- 创建函数:
CREATE FUNCTION func_name ( [func_parameter][para_type] )
RETURNS type
- 声明局部变量:
DECLARE X INT
,仅在BEGIN,AND中有效