代码拉取完成,页面将自动刷新
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')
编写一个 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
if N<0 then
RETURN (select min(Salary) from Employee);
else
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 NthHighestSalay
);
end if;
END
第N高的薪水,可以利用 limit x,y来解答 limit x, y 类似于 limit x offset y ,即跳过x行, 取y行数据。
题中,输入N,即返回第N高的薪水,则 当 N < 0 时,返回最低工资。(经测试,默认是这样返回,其他的按需求返回即可) 当 N >= 1 时,则返回第N高工资
因为 limit x, y 函数的关系,跳过x行,取y行。故输入N的时候,需要先减去1才能取回第N高的薪水,否则会跳过第N高的薪水数据,取了第N+1高的薪水数据出来,所以代码如下
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。