Напишите SQL-запрос, чтобы получить n-ю самую высокую зарплату из таблицы Employee.
+----+--------+
| Id | Salary |
+----+--------+
| 1 | 100 |
| 2 | 200 |
| 3 | 300 |
+----+--------+
Например, учитывая приведенную выше таблицу Employee, n-я самая высокая зарплата, где n = 2, равна 200. Если нет n-й самой высокой зарплаты, то запрос должен вернуть ноль.
+------------------------+
| getNthHighestSalary(2) |
+------------------------+
| 200 |
+------------------------+
Это решение не удалось
CREATE FUNCTION getNthHighestSalary(N INT) RETURNS INT
BEGIN
RETURN(
SELECT Salary
FROM (SELECT * FROM Employee ORDER BY Salary DESC LIMIT N)
AS TEMP
ORDER BY Salary ASC LIMIT 1
);
END
Вышеупомянутое решение не прошло этот случай


Принято решение:
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
Мой вопрос: почему принятое решение может возвращать ноль, если в таблице только одно значение? Спасибо
Кстати, этот вопрос использовать MySQL
