题目描述:
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.
题目大意:
编写SQL查询获取雇员表中的第n高薪水值。
例如,给定上面的雇员表,当n为2时,第n高薪水为200.如果没有第n高薪水,查询返回null。
解题思路:
使用LIMIT和ORDER BY
SQL语句:
CREATE FUNCTION getNthHighestSalary(N INT) RETURNS INT
BEGIN
DECLARE M INT;
SET M=N-1;
RETURN (
# Write your MySQL query statement below.
SELECT DISTINCT Salary FROM Employee ORDER BY Salary DESC LIMIT M, 1
);
END
参阅LeetCode Discuss:https://oj.leetcode.com/discuss/21311/accpted-solution-for-the-nth-highest-salary
本文链接:http://bookshadow.com/weblog/2015/01/13/leetcode-nth-highest-salary/
请尊重作者的劳动成果,转载请注明出处!书影博客保留对文章的所有权利。
一帆风顺_好好加油 发布于 2015年1月26日 23:32 #
大侠,这道nth highest salary 我有些疑问想问问,因为刚学,好多知识都停留在书本,用起来的时候还是不是很得心应手。
一,在mysql中sql也可以建立函数吗?二、m与n的含义是什么?我的理解是‘m是要返回n的前一列’,‘n是要返回的第n大的salary’,不知道这样理解对不对。三、getNthHighestSalary(N INT)其中的N是形式参数吗?
在线疯狂 发布于 2015年1月27日 17:50 #
一,是的,mysql也可以建立函数。二,因为直接写n - 1会报错。。。所以用辅助变量m。三,是的
telami 发布于 2018年2月27日 16:49 #
厉害