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

[Minha Solução] Complementando o relatório - VENDAS INVÁLIDAS

SELECT
    TDC.CPF,
    TDC.NOME,
    TDC.VOLUME_DE_COMPRA,
    TV.MES_ANO,
    TV.QUANTIDADE_TOTAL,
    CASE WHEN TDC.VOLUME_DE_COMPRA >= TV.QUANTIDADE_TOTAL
        THEN 'VENDAS VÁLIDAS' ELSE 'VENDAS INVÁLIDAS' END AS RESULTADO,
    ROUND((1 - (TDC.VOLUME_DE_COMPRA/TV.QUANTIDADE_TOTAL)) * 100,2) || '%' AS DIFERENCA_VOL_COMPRAS
FROM
TABELA_DE_CLIENTES TDC
INNER JOIN
    (SELECT
        NF.CPF,
        TO_CHAR(NF.DATA_VENDA,'MM-YYYY') AS MES_ANO,
        SUM(INF.QUANTIDADE) AS QUANTIDADE_TOTAL
    FROM NOTAS_FISCAIS NF
    INNER JOIN
    ITENS_NOTAS_FISCAIS INF
    ON NF.NUMERO = INF.NUMERO
    GROUP BY
    NF.CPF, TO_CHAR(NF.DATA_VENDA,'MM-YYYY')) TV
ON TV.CPF = TDC.CPF
WHERE TV.MES_ANO = '02-2015'
AND (TDC.VOLUME_DE_COMPRA - TV.QUANTIDADE_TOTAL) < 0
ORDER BY TDC.NOME;

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

1 resposta
solução!

Oi Carlos,

Sua solução está muito boa! 👍

A lógica para identificar as vendas inválidas e calcular a diferença percentual está correta.

O uso do CASE WHEN e do ROUND também foram aplicados de forma eficaz. 👏

A condição WHERE TV.MES_ANO = '02-2015' e AND (TDC.VOLUME_DE_COMPRA - TV.QUANTIDADE_TOTAL) < 0 está filtrando corretamente os resultados, mostrando apenas os clientes com vendas inválidas no mês de fevereiro de 2015. 🤔

Para saber mais: Documentação oficial do Oracle sobre Funções.

Continue praticando e explorando as funcionalidades do SQL! 💪