Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Вывод нескольких максимальных значений  [new]
Vikulya
Member

Откуда:
Сообщений: 1
Привет!

Помогите, пожалуйста, составить запрос, который будет выводить для каждого отдела первую тройку сотрудников с наибольшей ЗП

Исходная таблица:

create table staff(
employee_id integer primery key,
department_id integer not null,
salary integer not null
)

Я пониманию, как вывести просто всех сотрудников с максимальной ЗП, но как вывести троих сотрудников в каждом департаменте?

select employee_id, salary
from staff
where salary in (select max(salary)
from staff
group by department_id)

Заранее спасибо!
13 янв 16, 21:21    [18674957]     Ответить | Цитировать Сообщить модератору
 Re: Вывод нескольких максимальных значений  [new]
xenix
Guest
WITH CTE (employee_id,department_id,SALARY)AS
(
  SELECT employee_id,department_id,SALARY,
ROW_NUMBER()OVER(PARTITION BY DEPARTMENT_ID ORDER BY SALARY DESC)XCOL
  FROM STAFF
)
SELECT C.* FROM CTE C WHERE C.XCOL<=3
13 янв 16, 21:31    [18674994]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить