CREATE FUNCTION getNthHighestSalary(N INT) RETURNS INT
BEGIN
RETURN (
SELECT DISTINCT Salary FROM Employee ORDER BY Salary DESC LIMIT N-1,1
);
END
这个查询在M=0时给出异常,因为它变成了-1,但是当我这样写时
CREATE FUNCTION getNthHighestSalary(N INT) RETURNS INT
BEGIN
DECLARE M INT;
SET M=N-1;
RETURN (
SELECT DISTINCT Salary FROM Employee ORDER BY Salary DESC LIMIT M,1
);
END
请解释一下这两种说法的区别。当我设置M= N-1时,m也将是负的,当N=0时,它给出以下例外
Line 6: SyntaxError: near '-1,1
);
END'
5条答案
按热度按时间slhcrj9b1#
我不确定这是否有帮助。但这看起来像是Leet Code(https://leetcode.com/problems/nth-highest-salary)的问题。我跑了下面,它为我工作。
下面是提交结果:
希望这有帮助!
h9a6wy2h2#
我在这个问题上迟到了,但我也在这个问题上挣扎。花了几个小时调试这个。您可以始终在
where
子句中检查此条件。检查下面的查询。限值中的参数也令人困惑。在某些情况下,不支持
offset
。有一个简单的例子。我们可以把上面的读作
从a开始,在B之后停止。
干杯!
6jygbczu3#
别忘了把工资分组。
因此,如果你有两个100的工资,你正在寻找第二高,答案应该是空的。
hc8w905p4#
谢谢@乔治海沃德
9udxz4iz5#