[LeetCode]Nth Highest Salary

题目描述:

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/
请尊重作者的劳动成果,转载请注明出处!书影博客保留对文章的所有权利。

如果您喜欢这篇博文,欢迎您捐赠书影博客: ,查看支付宝二维码

Pingbacks已关闭。

评论
  1. 一帆风顺_好好加油 一帆风顺_好好加油 发布于 2015年1月26日 23:32 #

    大侠,这道nth highest salary 我有些疑问想问问,因为刚学,好多知识都停留在书本,用起来的时候还是不是很得心应手。
    一,在mysql中sql也可以建立函数吗?二、m与n的含义是什么?我的理解是‘m是要返回n的前一列’,‘n是要返回的第n大的salary’,不知道这样理解对不对。三、getNthHighestSalary(N INT)其中的N是形式参数吗?

  2. 在线疯狂 在线疯狂 发布于 2015年1月27日 17:50 #

    一,是的,mysql也可以建立函数。二,因为直接写n - 1会报错。。。所以用辅助变量m。三,是的

  3. telami telami 发布于 2018年2月27日 16:49 #

    厉害

张贴您的评论