Problem 177: 第N高的薪水

Categories: LeetCode-DataBase

Read in English

177. 第N高的薪水

编写一个 SQL 查询,获取 Employee 表中第 n 高的薪水(Salary)。

Id Salary
1 100
2 200
3 300

例如上述 Employee 表,n = 2 时,应返回第二高的薪水 200。如果不存在第 n 高的薪水,那么查询应返回 null。

getNthHighestSalary(2)
200

sql脚本:

Create table If Not Exists Employee (Id int, Salary int);
Truncate table Employee;
insert into Employee (Id, Salary) values (1, 100);
insert into Employee (Id, Salary) values (2, 200);
insert into Employee (Id, Salary) values (3, 300);

解答

解法一:

CREATE FUNCTION getNthHighestSalary(N INT) RETURNS INT
BEGIN
		SET N := N - 1;
  RETURN (
      # Write your MySQL query statement below.
      SELECT (SELECT DISTINCT Salary FROM Employee ORDER BY Salary DESC LIMIT N, 1)
  );
END

MySQL直接执行会遇到报错信息,解决方案请参考:DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled

Read More

Git简易教程

【2021-02-21】Git常用命令速查 - 包括reset、diff、checkout、stash等命令的使用方法