1
resposta

[Projeto] somente os produtos que venderam mais que 394000 litros

Resposta esperada:

SELECT  CODIGO_DO_PRODUTO,
        SUM(QUANTIDADE) AS "TOTAL DE VENDAS"
FROM ITENS_NOTAS_FISCAIS
GROUP BY CODIGO_DO_PRODUTO
HAVING SUM(QUANTIDADE) > 394000
ORDER BY SUM(QUANTIDADE) DESC;

Porém, como o exercício pede produtos que venderam mais que 394000 LITROS, temos que considerar que nem todos os produtos têm sua apresentação em litros. Alguns apresentam tamanho em ml.

Para que o resultado estivesse 100% de acordo com o solicitado, seria necessário o uso de alguns conceitos ainda não vistos no curso:

SELECT       INF.CODIGO_DO_PRODUTO,
                    SUM(INF.QUANTIDADE * CD_LITRO.QTD_LITROS) AS "TOTAL DE VENDAS EM LITROS",

FROM ITENS_NOTAS_FISCAIS INF

JOIN

(SELECT  CODIGO_DO_PRODUTO, 
                TO_NUMBER(SUBSTR(TAMANHO, 1, INSTR(TAMANHO, ' Litro') - 1)) 
                            AS QTD_LITROS
FROM TABELA_DE_PRODUTOS
WHERE INSTR(TAMANHO, ' Litro') > 0

UNION

SELECT   CODIGO_DO_PRODUTO, 
                TO_NUMBER(SUBSTR(TAMANHO, 1, INSTR(TAMANHO, ' ml') - 1)) / 1000 
                            AS QTD_LITROS
FROM TABELA_DE_PRODUTOS
WHERE INSTR(TAMANHO, ' ml') > 0) CD_LITRO

ON INF.CODIGO_DO_PRODUTO = CD_LITRO.CODIGO_DO_PRODUTO

GROUP BY INF.CODIGO_DO_PRODUTO

HAVING SUM(INF.QUANTIDADE * CD_LITRO.QTD_LITROS) > 394000

ORDER BY SUM(INF.QUANTIDADE * CD_LITRO.QTD_LITROS) DESC;
1 resposta

Oi Paulo! Tudo certo por aí?

Muito bem observado! Esse olhar é muito importante para que as consultas tenham de fato o resultado desejado.

Obrigada por compartilhar seu código com o fórum. Tenho certeza que será muito inspirador para quem está começando agora a aprender SQL.

Qualquer dúvida, estou por aqui. Abração!