Получение сотрудников с высшей зарплатой в каждом подразделении

Вычислите максимальную зарплату для каждого department_id и выберите всех сотрудников с этим значением. При равенстве максимума должны остаться несколько работников.

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

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

Вычислите максимальную зарплату для каждого department_id и выберите всех сотрудников с этим значением. При равенстве максимума должны остаться несколько работников.

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

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

Условие

Необходимо сформировать список работников, получающих наибольшую заработную плату в рамках своего отдела.

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

Ответ

Вычислите максимальную зарплату для каждого department_id и выберите всех сотрудников с этим значением. При равенстве максимума должны остаться несколько работников.

Если таблица называется employees:

SELECT e.*
FROM employees e
WHERE e.salary = (
    SELECT MAX(other.salary)
    FROM employees other
    WHERE other.department_id = e.department_id
);

Имя таблицы в исходнике не задано, поэтому здесь оно условное. Зарплата NULL не участвует в MAX. Сотрудники с department_id=NULL не попадут в результат; если их нужно считать общей группой, задайте null-safe сравнение или оконный MAX с PARTITION BY. Поле CHIEF_ID для этой задачи не требуется.

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

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

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

Подробнее