Вычислите максимальную зарплату для каждого 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 для этой задачи не требуется.