ROWNUM Retornando valores aleatórios sem ordenção

Dúvidas, dicas e truques de SQL, Select, Update, Delete, cláusulas, operações com joins, Funções em SQLs, etc
  

Mensagemem Sex, 22 Nov 2019 5:26 pm

Boa tarde! :D
Pessoal, cá estou eu mais uma vez, desta vez na tentativa de usar o RONUM<10 e order by desc para trazer os 10 maiores valores de um tabela.
Nunca tive problema ao usar o ROWNUM em consultas pequenas, como numa dessa com vários wheres, estou tendo problemas, pois numa primeira consulta com o código abaixo, tenho o retorno correto, da segunda em diante, não vem os 10 valores, vem tipo 5 e valores de forma aleatória.. fiquei sem entender.. :cry: :?:

Segue minha consulta
Código: Selecionar todos
select P.Codusur, U.NOME, SUM (P.VLATEND)VLTOTAL from pcpedc p, PCUSUARI U where P.CODUSUR = U.CODUSUR and ROWNUM<=70 AND P.CODSUPERVISOR NOT IN (1) AND P.DATA BETWEEN '22-NOV-2019' AND '30-NOV-2019' GROUP BY P.Codusur, U.NOME order by VLTOTAL
rohilario_

Mensagemem Sex, 22 Nov 2019 6:55 pm

Tem que fazer em duas etapas:

Código: Selecionar todos
select *
from (
  select P.Codusur, U.NOME, SUM (P.VLATEND)VLTOTAL
  from pcpedc p, PCUSUARI U
  where P.CODUSUR = U.CODUSUR
    and ROWNUM<=70
    AND P.CODSUPERVISOR NOT IN (1)
    AND P.DATA BETWEEN '22-NOV-2019'
    AND '30-NOV-2019'
  GROUP BY P.Codusur, U.NOME
  order by 3 desc
  )
where rownum <=10


Também dá pra usar Funções Analíticas pra isso.
download/funcoes_ANALITICAS.html

:-o
dr_gori
Localização: Portland, OR USA

Thomas F. G

Você já respondeu a dúvida de alguém hoje?
http://glufke.net/oracle/search.php?search_id=unanswered

Mensagemem Sáb, 23 Nov 2019 3:17 pm

Só relembrando que o filtro do rownum é aplicado antes da ordenação quando especificado um Order by. Caso o Oracle utilize ou não um índice na consulta pode acontecer isso que você mencionou de virem dados "aleatórios" que na verdade é a ordem que está no índice.

https://docs.oracle.com/cd/B19306_01/se ... mns009.htm
souldeath
Localização: Limeira



Voltar para SQL

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante