From 5bc06e86e6613f68e2d673aefdea69af7e02ab23 Mon Sep 17 00:00:00 2001 From: zeek <984294471@qq.com> Date: Tue, 7 Apr 2020 21:37:35 +0800 Subject: [PATCH] =?UTF-8?q?=E7=AC=ACn=E9=AB=98=E7=9A=84=E8=96=AA=E6=B0=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sql/getNthHighestSalary.sql | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 sql/getNthHighestSalary.sql 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