您的位置:首页 > 其它

LeetCode Nth Highest Salary

2015-04-12 22:58 447 查看
Write a SQL query to get the nth highest salary from the
Employee
table.
+----+--------+
| Id | Salary |
+----+--------+
| 1  | 100    |
| 2  | 200    |
| 3  | 300    |
+----+--------+


For example, given the above Employee table, the nth highest salary where n = 2 is
200
.
If there is no nth highest salary, then the query should return
null
.

注意相同的salary算一位,而且limit以及offset不能用表达式,至少我写的时候是不行的。

一开始不知道如何声明一个变量,结果硬是写了这个方法:

CREATE FUNCTION getNthHighestSalary(N INT) RETURNS INT
BEGIN
  RETURN (
      select(select a.salary from(select distinct b.salary from Employee b union all select max(c.salary) from Employee c)a order by a.salary desc limit 1 offset N)
  );
END
后来在discuss看到了如何声明变量:

CREATE FUNCTION getNthHighestSalary(N INT) RETURNS INT
BEGIN
declare M int;
set M = N - 1;
  RETURN (
      select distinct salary from Employee order by salary desc limit 1 offset M
  );
END
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: