43. Второй по величине оклад #
Условие задачи:
📌 Есть таблица Employee(id, email, salary)
. Нужно получить второй по величине уникальный salary
.
We have table Employee with columns: id, email, salary.
How would you get the second highest salary?
Спойлеры к решению
Подсказки
💡 Первый вариант — найти максимальный
💡 Второй вариант — использовать оконную функцию
💡 Не забудьте учесть повторяющиеся оклады: нужны уникальные значения.
salary
меньше, чем максимальный в таблице, через подзапрос.💡 Второй вариант — использовать оконную функцию
DENSE_RANK()
по salary
в порядке убывания и выбрать ранг = 2.💡 Не забудьте учесть повторяющиеся оклады: нужны уникальные значения.
Решение
-- Вариант 1: Подзапрос
SELECT MAX(salary) AS second_highest_salary
FROM Employee
WHERE salary < (
SELECT MAX(salary)
FROM Employee
);
-- Вариант 2: Оконная функция
SELECT salary AS second_highest_salary
FROM (
SELECT
salary,
DENSE_RANK() OVER (ORDER BY salary DESC) AS rnk
FROM Employee
) t
WHERE rnk = 2;