0

Write a SQL query to get the nth highest salary from the Employee table.

+----+--------+
| Id | Salary |
+----+--------+
| 1  | 100    |
| 2  | 200    |
| 3  | 300    |
+----+--------+

For example, given the above Employee table, the nth highest salary where n = 2 is 200. If there is no nth highest salary, then the query should return null.

my answer

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

error:

Runtime Error Message:  Line 6: SyntaxError: near '-1, 1 ); END'
Last executed input:    {"headers": {"Employee": ["Id", "Salary"]}, "argument": 1, "rows": {"Employee": [[1, 100]]}}
BufBills
  • 8,005
  • 12
  • 48
  • 90

1 Answers1

0
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');

300
Mihai
  • 26,325
  • 7
  • 66
  • 81