В заданном вопросе
Напишите запрос SQL, чтобы получить вторую по величине зарплату из таблицы Employee.
+----+--------+
| Id | Salary |
+----+--------+
| 1 | 100 |
| 2 | 200 |
| 3 | 300 |
+----+--------+
Например,Учитывая приведенную выше таблицу сотрудников, запрос должен вернуть 200 в качестве второго по величине оклада. Если нет второго по величине оклада, запрос должен вернуть ноль.
+---------------------+
| SecondHighestSalary |
+---------------------+
| 200 |
+---------------------+
Я написал код для этого вопроса, однако ожидаемый результат будетразные.
Мой код:
SELECT
CASE
WHEN COUNT(*) = 1 THEN NULL
ELSE (SELECT Salary FROM Employee HAVING Salary < MAX(Salary) ORDER BY Salary DESC LIMIT 1)
END AS SecondHighestSalary
FROM Employee;
Я думаю, что с моим кодом что-то не так, но я не могу найти, в чем здесь проблема.Мой код возвращает 100
, а не 200
.Что я ошибся?
+---------------------+
| SecondHighestSalary |
+---------------------+
| 100 |
+---------------------+