sql - limitar a quantidade de linhas no resultado

11/02/2020

13

olá, meu problema é o seguinte:

tenho a tabela EMPLOYEES, com as colunas SALARY e DEPARTMENT_ID.
tenho também a tabela DEPARTMENTS, que possui as colunas DEPARTMENT_ID e DEPARTMENT_NAME.
sendo DEPARTMENT_ID a chave que liga as duas tabelas.

preciso listar os 3 maiores salários para cada departamento.

a query abaixo está correta e trás exatamente o que eu quero:

select distinct department_name, salary
from (select d.department_name, e.salary, RANK() OVER (PARTITION BY d.department_name ORDER BY salary DESC) RANK
      from employees e join departments d
      on e.department_id = d.department_id
      order by d.department_name, e.salary desc)
where rank <= 3
order by department_name, salary;


porém gostaria de saber se há alguma solução mais fácil, por exemplo com a palavra-chave ROWNUM.

uso oracle.
Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários. Para saber mais sobre o uso de cookies,
consulte nossa política de privacidade. Ao continuar navegando em nosso site, você concorda com a nossa política.

Aceitar