力扣数据库-177.第N高的薪水

题目:

编写一个 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

set N=N-1;
  RETURN (
      # Write your MySQL query statement below.
     select ifnull((select distinct Salary from Employee order by Salary desc limit N,1),null)as NthHighestSalary
  );
END

思路:

获取第n高的薪水,可以采用limit子句
limit n子句表示查询结果返回前n条数据
offset n表示跳过x条语句
limit y offset x 分句表示查询结果跳过 x 条数据,读取前 y 条数据
使用limit和offset,降序排列再返回第二条记录可以得到第二大的值。
在本题中,要获取第N高的薪水,所以我们limit子句中应当是N-1,1
然后用ifnull子句满足,如果不存在返回null

猜你喜欢

转载自blog.csdn.net/A52091/article/details/105219689
今日推荐