Middle
17
Найти сотрудника с наибольшей зарплатой в каждой позиции и вывести все его данные
Компании, где спрашивали
Ответ от нейросети
sobes.tech AI
Чтобы найти сотрудника с наибольшей зарплатой в каждой позиции и вывести все его данные, можно использовать оконные функции или подзапросы.
Пример на SQL с оконной функцией ROW_NUMBER():
SELECT * FROM (
SELECT *, ROW_NUMBER() OVER (PARTITION BY position ORDER BY salary DESC) as rn
FROM employees
) sub
WHERE rn = 1;
Здесь для каждой позиции (position) нумеруются сотрудники по убыванию зарплаты, и выбирается только первый — с максимальной зарплатой.
Если несколько сотрудников имеют одинаковую максимальную зарплату, и нужно вывести всех, можно использовать RANK() или DENSE_RANK() вместо ROW_NUMBER().
Пример с подзапросом:
SELECT e.*
FROM employees e
JOIN (
SELECT position, MAX(salary) as max_salary
FROM employees
GROUP BY position
) m ON e.position = m.position AND e.salary = m.max_salary;