第N高的薪水
编写一个 SQL 查询,获取 Employee 表中第 n 高的薪水(Salary)。
+----+--------+
| Id | Salary |
+----+--------+
| 1 | 100 |
| 2 | 200 |
| 3 | 300 |
+----+--------+
| Id | Salary |
+----+--------+
| 1 | 100 |
| 2 | 200 |
| 3 | 300 |
+----+--------+
例如上述 Employee 表,n = 2 时,应返回第二高的薪水 200。如果不存在第 n 高的薪水,那么查询应返回 null。
+------------------------+
| getNthHighestSalary(2) |
+------------------------+
| 200 |
+------------------------+
| getNthHighestSalary(2) |
+------------------------+
| 200 |
+------------------------+
编写sql代码如下:
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 1 OFFSET N),NULL) ); END
1)limit和offset关键字的使用:
limit x offset y:略过前y条记录,选取x条记录;等价于limit y,x;
2)IFNULL
IFNULL(expression,default),如果表达式值不空,则返回表达式的值;如果表达式值为空,则返回default;

浙公网安备 33010602011771号