Войти Регистрация
Data base

230. Сотрудники склада, которые получают больше руководителя

Лёгкая

В employees — сотрудники склада: boss_id ссылается на руководителя в той же таблице, у директора он пустой. salary_rub — оклад, у части руководителей его ещё не завели (NULL). У уволенных заполнена дата fired_on.

Найдите работающих сотрудников, у которых оклад строго больше, чем у их руководителя. Руководитель тоже должен работать: если он уволен, сотрудника временно ни с кем не сравниваем. Верните employee_id, full_name, salary_rub, boss_salary_rub, порядок — по employee_id.

В работе: Проверка зарплатной сетки перед пересмотром окладов: где подчинённый обогнал руководителя.

Таблицы

employees — одна строка — один сотрудник, руководитель в той же таблице

КолонкаТипЧто значит
employee_idintключ
full_nametextимя
boss_idintруководитель, NULL у директора
salary_rubintоклад, может быть NULL
fired_ondateдата увольнения, NULL — работает

Пример: данные

employees · 7 строк

employee_idfull_nameboss_idsalary_rubfired_on
1Ирина СамойловаNULL450000NULL
2Олег Бахтин1210000NULL
3Марина Ушакова2230000NULL
4Тимур Ахметов2210000NULL
5Ксения Лаптева6190000NULL
6Павел Гриневич11700002026-08-31
7Дина Рахимова3240000NULL

Ожидаемый ответ

employee_idfull_namesalary_rubboss_salary_rub
3Марина Ушакова230000210000
7Дина Рахимова240000230000
Как проверяем Ваш запрос выполняется в PostgreSQL 16 прямо в браузере на 5 наборах данных: пример выше и скрытые — с NULL, повторами и пустыми таблицами. Нужен один SELECT, можно с WITH. Сравниваем значения по порядку колонок, названия колонок могут быть свои. Порядок строк важен — как задано в условии.
employee_id, full_name, salary_rub, boss_salary_rub
JOINNULL

Источник: тестовое продуктового аналитика (Middle) в Wildberries, сборник No Data No Growth. Условие пересказано своими словами.