题目描述
编写一个SQL查询,获取Employee
表中第N
高的薪水(Salary)。
1 | +----+--------+ |
例如上述Employee
表,当N=2
时,SQL查询应该返回200
作为第二高的薪水,如果不存在第N
高的薪水,那么查询应该返回null
.
1 | +------------------------+ |
解法
和176题的思路相同。先对Salary去重,防止相等的数据对后面查询造成干扰,根据Salary进行降序排序,然后使用limit关键字略过第N-1
条信息,得到接下来的第一条信息则得到的即为第N
高的薪水。
1 | SELECT IFNULL( |
使用函数的方法来封装查询语句
1 | CREATE FUNCTION getNthHighestSalary(N INT) RETURNS INT |
注意:这里不能在limit关键字后面写N-1,需要先将变量计算好,set N = N - 1,再在sql语句中使用N