Вторая по величине зарплата
Контекст
В «Пульсе» — внутренней HR-системе компании — начался пересмотр окладов. Финансы просят точку опоры: какая в компании вторая по величине зарплата. Вопрос кажется простым ровно до момента, когда выясняется, что верхний оклад получают двое.
Задача
Верните вторую по величине зарплату среди действующих сотрудников — одно число в колонке second_salary.
Данные
Таблица employees — сотрудники:
| колонка | тип | что хранит |
|---|---|---|
id | int | номер сотрудника |
name | text | имя |
department_id | int | номер отдела |
manager_id | int | номер руководителя, NULL у директора |
job_title | text | должность |
salary | int | оклад в рублях, NULL если ещё не назначен |
hired_at | date | дата найма |
left_at | date | дата ухода, NULL у действующих |
Примерные строки:
| id | name | job_title | salary | hired_at | left_at |
|---|---|---|---|---|---|
| 1 | Артём Кузнецов | директор | 480000 | 2023-02-01 | NULL |
| 2 | Марина Лебедева | руководитель разработки | 480000 | 2023-04-10 | NULL |
| 22 | Слава Дёмин | стажёр | NULL | 2026-06-15 | NULL |
| 23 | Кирилл Ким | архитектор | 490000 | 2023-06-01 | 2026-05-31 |
Правила
- Ровно одна строка и одна колонка —
second_salary. - Считаем только действующих:
left_at IS NULL. - «Вторая по величине» — следующий по величине уровень оклада, а не второй сотрудник в отсортированном списке. Если максимум получают двое, оба остаются на первом уровне.
- Сотрудники без оклада (
salary IS NULL) в расчёт не идут. - Если второго уровня нет — все получают поровну или действующий сотрудник один — верните NULL (особое значение «данных нет»: не ноль и не пустая строка).
Примеры
-- Оклады 500000, 500000, 300000:
-- second_salary
-- 300000
-- Оклады 400000, 400000:
-- second_salary
-- NULL
Где это пригодится
Вопрос про вторую по величине — входной фильтр на собеседовании: он проверяет, различает ли кандидат номер строки и уровень значения. Тот же приём достаёт вторую по обороту площадку и предпоследнюю ступень тарифной сетки.