Select com ROWNUM por grupo

Dúvidas, dicas e truques de PL/SQL. Aqui também vão assuntos relacionados a pacotes, triggers, funções, Java-Stored Procedures, etc
Responder
mbfilho
Rank: Estagiário Pleno
Rank: Estagiário Pleno
Mensagens: 5
Registrado em: Qui, 26 Jan 2006 10:46 am
Localização: Aracaju-SE

Caros colegas,

como posso fazer um select que me retorne somente os três maiores valores de cada tipo de dado?

Exempplo:

Tenho uma tabela de AÇÃO, onde cada registro tem ligação com a tabela de ENTIDADE. Queria pegar somente as 3 maiores ações de cada entidade.

----------------------
TABELA COMPLETA
----------------------
E | A
----------
1 | 1467
1 | 647
1 | 648

1 | 649
1 | 653
1 | 655
1 | 657
1 | 659
2 | 157
2 | 156
2 | 155

2 | 1333
2 | 165
2 | 1329
3 | 3514
3 | 3513
3 | 3512

3 | 3511
3 | 3510
3 | 1023
3 | 1022


Agradeço desde já,
Marcos Bastos
mbfilho
Rank: Estagiário Pleno
Rank: Estagiário Pleno
Mensagens: 5
Registrado em: Qui, 26 Jan 2006 10:46 am
Localização: Aracaju-SE

Consegui resolver utilizando o RANK() OVER (PARTITION BY )
bertosro
Rank: Analista Júnior
Rank: Analista Júnior
Mensagens: 88
Registrado em: Sex, 18 Ago 2006 11:13 am
Localização: São Paulo - SP
Bertosro
MSN / TALK - roberto.fernandes@gmail.com

select RNK.fta_num, RNK.vlr_itm, RNK.DENSE_RANK
FROM(
SELECT a.fta_num, a.vlr_itm,
DENSE_RANK () OVER (PARTITION BY a.fta_num ORDER BY a.vlr_itm DESC) DENSE_RANK
FROM item_nota_fiscal a
) RNK
WHERE RNK.DENSE_RANK < 3
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 2 visitantes