Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Maior quantidade vendida e uso de rownum

Olá, gostaria apenas de entender porque quando tento retornar apenas a primeira linha com a condição rownum = 1 após fazer um order by ele não necessariamente me trás o valor que desejo (primeiro maior).

Estou tentando fazer isso para o exercicio que devemos trazer a maior venda da linha refrescante 1l morango e limão, mas ele me retorna valores diferentes.

SELECT * FROM ITENS_NOTAS_FISCAIS
WHERE codigo_do_produto = '1101035'
ORDER BY QUANTIDADE DESC;

retorna como maior quantidade de 99

SELECT * FROM ITENS_NOTAS_FISCAIS
WHERE codigo_do_produto = '1101035' and ROWNUM = 1
ORDER BY QUANTIDADE DESC;

me retorna quantidade 51.

Obrigada

1 resposta
solução!

Olá Adriana, tudo bem?

A sua query não retornou o resultado esperado devido a ordem de processamento da query, a cláusula FROM / WHERE serão as primeiras a serem processadas, então o ROWNUM é executado antes do ORDER BY.

Uma opção para chegar ao resultado esperado utilizando ROWNUM, é através de subconsultas:

SELECT * FROM 
    ( SELECT * FROM ITENS_NOTAS_FISCAIS 
    WHERE codigo_do_produto = '1101035'
    ORDER BY QUANTIDADE DESC)
WHERE ROWNUM = 1

Espero ter ajudado e bons estudos!