@OlegKrasnov87

Как найти 3 работников каждого деп-та с макс. зарплатой за 1 проход базы?

Задача - построить запрос для таблицы TABLE (columns: Employee, Department, Salary):
за 1 проход бд (то есть как я понимаю, без вложенных sub-query with SELECT - или я неправ?) вернуть по 3 работника с максимальной зп в каждом департаменте.

Я написал пока что-то такое, но вложенный query видимо не подходит + не могу врубиться, как сделать LIMIT 3 для каждого департамента.

(Новичок пока, буду очень благодарен за помощь)

SELECT t.employee, t.department, t.salary
FROM (
SELECT department, MAX(salary) AS max_salary
FROM table GROUP BY employee
) AS x
INNER JOIN table AS t
ON t.department = x.department AND t.salary = x.max_salary
LIMIT 3;

спасибо!
  • Вопрос задан
  • 338 просмотров
Пригласить эксперта
Ответы на вопрос 1
@mletov
SELECT *
FROM
(
SELECT Employee, 
             Department, 
             Salary,
             ROW_NUMBER() OVER(PARTITION BY Department ORDER BY salary DESC) AS rn
FROM table
) AS t1
WHERE rn <= 3
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы