diff --git a/sql/getNthHighestSalary.sql b/sql/getNthHighestSalary.sql new file mode 100644 index 0000000..8185708 --- /dev/null +++ b/sql/getNthHighestSalary.sql @@ -0,0 +1,29 @@ + +/** +编写一个 SQL 查询,获取 Employee 表中第 n 高的薪水(Salary)。 ++----+--------+ +| 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 + RETURN ( + # Write your MySQL query statement below. + SELECT DISTINCT e.salary + FROM employee e + WHERE (SELECT count(DISTINCT salary) FROM employee WHERE salary>e.salary) = N-1 + ); +END