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

Relatório de vendas válidas

Bom dia Fiz o exercício de forma um pouco diferente, ao meu ver mais simples, peço críticas a forma feita. Obrigado.

/* CONSULTA FINAL*/
SELECT SUM(A.QUANTIDADE) VOLUME_NO_MÊS, 
DATE_FORMAT(B.DATA_VENDA, '%m-%y') DATA_PADRÃO_MÊS_ANO,
B.CPF, A.CODIGO_DO_PRODUTO,
C.VOLUME_DE_COMPRA VOLUME_COMPRA_PERMITIDO, 
CASE 
    WHEN SUM(A.QUANTIDADE) <= C.VOLUME_DE_COMPRA 
    THEN 'COMPRA VÁLIDA'
    ELSE 'COMPRA NÃO VÁLIDA'
END AS 'VALIDADE_DA_COMPRA'
FROM itens_notas_fiscais A LEFT JOIN notas_fiscais B
ON A.NUMERO = B.NUMERO LEFT JOIN tabela_de_clientes C 
ON B.CPF = C.CPF
WHERE MONTH(DATA_VENDA) = 01
AND YEAR(DATA_VENDA) = 2015 GROUP BY B.CPF;

No caso, para obter de outros meses e anos, é só modificar no WHERE

1 resposta
solução!

Olá Danival, tudo bem?

Achei a lógica implementada na sua query bem legal Danival, em vez de retornar todos os meses de uma única vez, você inseriu um filtro no WHERE, para que seja filtrado apenas por um mês. Ficou bem mais rápido o retorno e bem mais organizado.

Porém Danival eu mudaria algumas coisas nesta query.

  • Mudaria a ordem de retorno dos campos

  • Removeria o campo código do produto

  • E acrescentaria o nome do cliente.

    Dessa forma:

SELECT B.CPF, C.NOME, 
DATE_FORMAT(B.DATA_VENDA, '%m-%y') DATA_PADRÃO_MÊS_ANO,
C.VOLUME_DE_COMPRA VOLUME_COMPRA_PERMITIDO, 
SUM(A.QUANTIDADE) VOLUME_NO_MÊS,
CASE 
    WHEN SUM(A.QUANTIDADE) <= C.VOLUME_DE_COMPRA 
    THEN 'COMPRA VÁLIDA'
    ELSE 'COMPRA NÃO VÁLIDA'
END AS 'VALIDADE_DA_COMPRA'
FROM itens_notas_fiscais A LEFT JOIN notas_fiscais B
ON A.NUMERO = B.NUMERO LEFT JOIN tabela_de_clientes C 
ON B.CPF = C.CPF
WHERE MONTH(DATA_VENDA) = 01
AND YEAR(DATA_VENDA) = 2015 GROUP BY B.CPF;

Continue assim e bons estudos!