编写一个SQL查询,从Employee表中获得第n个最高工资。
+----+--------+
| Id | Salary |
+----+--------+
| 1 | 100 |
| 2 | 200 |
| 3 | 300 |
+----+--------+例如,给定上面的Employee表,n=2的第n个最高工资是200。如果没有第n个最高工资,则查询应返回null。
我的答案
CREATE FUNCTION getNthHighestSalary(N INT) RETURNS INT
BEGIN
RETURN (
# Write your MySQL query statement below.
SELECT Salary FROM Employee ORDER BY Salary DESC LIMIT N-1, 1
);
END错误:
Runtime Error Message: Line 6: SyntaxError: near '-1, 1 ); END'
Last executed input: {"headers": {"Employee": ["Id", "Salary"]}, "argument": 1, "rows": {"Employee": [[1, 100]]}}发布于 2015-01-12 00:51:20
DELIMITER $
CREATE FUNCTION salarynth(n1 INT)
RETURNS INT
DETERMINISTIC
BEGIN
DECLARE myvar INT;
SELECT
SUBSTRING_INDEX(SUBSTRING_INDEX(CONCAT(group_concat(salary order by id),','), ',', n1),',',-1) INTO myvar FROM t;
RETURN myvar;
END$
DELIMITER ;
SELECT `salarynth`('3');
300https://stackoverflow.com/questions/27889343
复制相似问题