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

[Dúvida] MYSQL - 06.Exemplos de Relatorios / Relatorio de vendas válidas

Olá, tudo bem?

Acredito ter havido um equívoco. Na posição 14:25 do vídeo o instrutor disse ter havido um erro no comando feito, porque ele estaria usando a cláusula 'Group by' e isso obrigaria a ter a função SUM (depois ele utilizou um MAX) para todo campo numérico, mas pelo que observei no vídeo o erro se deu porque ele associou o campo TC.QUANTIDADE à TABELA_DE_CLIENTES e esse campo não existe nessa tabela, o campo correto é o VOLUME_DE_COMPRA. Eu montei meu comando sem utilizar a cláusula MAX em um Select único sem precisar da Subconsulta e obtive o mesmo resultado do instrutor, está correto ou posso ter algum problema com esse meu comando?

Meus comandos:

SELECT NF.CPF, TC.NOME, DATE_FORMAT(NF.DATA_VENDA, '%Y-%m') AS 'ANO-MES', SUM(ITF.QUANTIDADE) AS QUANTIDADE_VENDAS, TC.VOLUME_DE_COMPRA AS QUANTIDADE_LIMIT FROM notas_fiscais NF INNER JOIN itens_notas_fiscais ITF ON NF.NUMERO= ITF.NUMERO INNER JOIN tabela_de_clientes TC ON NF.CPF = TC.CPF GROUP BY NF.CPF, TC.NOME, DATE_FORMAT(NF.DATA_VENDA, '%Y-%m');

Meu Comando final sem a Subconsulta:

SELECT NF.CPF, TC.NOME, DATE_FORMAT(NF.DATA_VENDA, '%Y-%m') AS 'ANO-MES', SUM(ITF.QUANTIDADE) AS QUANTIDADE_VENDAS, TC.VOLUME_DE_COMPRA AS QUANTIDADE_LIMITE, TC.VOLUME_DE_COMPRA - SUM(ITF.QUANTIDADE) AS DIFERENCA, CASE WHEN (TC.VOLUME_DE_COMPRA - SUM(ITF.QUANTIDADE)) < 0 THEN 'INVÁLIDA' ELSE 'VÁLIDA' END AS STATUS_VENDA FROM notas_fiscais NF INNER JOIN itens_notas_fiscais ITF ON NF.NUMERO= ITF.NUMERO INNER JOIN tabela_de_clientes TC ON NF.CPF = TC.CPF GROUP BY NF.CPF, TC.NOME, DATE_FORMAT(NF.DATA_VENDA, '%Y-%m');

Comando do Instrutor que apresentou o erro:

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

1 resposta
solução!

Oi! Como você está?

Parece que você entendeu bem a lógica por trás da construção do relatório de vendas e aplicou corretamente os conceitos de SQL para obter o resultado desejado, parabéns! Se você conseguiu obter o mesmo resultado do instrutor sem utilizar a subconsulta e o comando MAX, isso indica que a sua consulta está correta. Existem várias formas de chegar ao mesmo resultado, o mais importante é entender o que está por trás do código que você escreveu.

Obrigada por avisar sobre esse equívoco na aula!

Abração.

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!