Выборка сотрудников, получающих больше, чем их руководители

Соедините EMPLOYEE с самой собой: одна копия — сотрудник, другая — его руководитель. Затем сравните зарплаты по связи CHIEF_ID = ID.

Короткий ответ

Что ответить на собеседовании

Соедините EMPLOYEE с самой собой: одна копия — сотрудник, другая — его руководитель. Затем сравните зарплаты по связи CHIEF_ID = ID.

Подробный разбор

Ответ с пояснениями

Условие

Получить перечень работников, у которых размер заработной платы превышает зарплату их непосредственного начальника.

CREATE TABLE EMPLOYEE (
ID NUMBER,
NAME VARCHAR(256),
SALARY NUMBER, 
DEPARTMENT_ID NUMBER, 
CHIEF_ID NUMBER
);

Ответ

Соедините EMPLOYEE с самой собой: одна копия — сотрудник, другая — его руководитель. Затем сравните зарплаты по связи CHIEF_ID = ID.

SELECT e.ID, e.NAME, e.SALARY, e.CHIEF_ID
FROM EMPLOYEE e
JOIN EMPLOYEE chief ON chief.ID = e.CHIEF_ID
WHERE e.SALARY > chief.SALARY;

Предполагается уникальность ID, которую стоит закрепить ограничением. Работники без найденного руководителя не попадут в результат. При NULL в зарплате сравнение не истинно, поэтому такие строки также исключены. Совпадение DEPARTMENT_ID условием задачи не требуется.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее