Sobes.tech
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;