Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Não entendi a necessidade do uso do MAX

Não entendi o motivo de colocar o agregador MAX( ) e não colocar o campo QUANTIDADE simplesmente no GROUP BY (como coloquei no código abaixo), fiz desse jeito e me parece que o resultado foi igual.

/* COMPARAÇÃO QUANTIDADE DE VENDAS E LIMITE POR CLIENTE */
SELECT NF.CPF
, CLI.NOME
, DATE_FORMAT(NF.DATA_VENDA, '%Y-%m') AS MES_ANO
, SUM(INF.QUANTIDADE) AS QUANTIDADE_MENSAL
, CLI.VOLUME_DE_COMPRA AS QUANTIDADE_LIMITE
FROM itens_notas_fiscais INF INNER JOIN notas_fiscais NF
ON INF.NUMERO = NF.NUMERO
INNER JOIN tabela_de_clientes CLI
ON NF.CPF = CLI.CPF
GROUP BY MES_ANO,  CPF, NOME, QUANTIDADE_LIMITE;
3 respostas
solução!

Olá Julia, tudo bem?

Segundo o instrutor ao utilizar o group by, é obrigatório todo campo numérico ter um agregador, mas neste caso funcionou normalmente sem o agregador, então Julia isso pode depender da versão utilizada, já que no momento que o instrutor executou a query ocorreu um erro e no momento que você executou funcionou corretamente, já em relação aos campos no group by, pode ser utilizado o nome dos campos, como o instrutor fez ou os alias como você demonstrou, então Julia creio que isso vai depender também da versão utilizada, mas você tem razão, é possível chegar ao mesmo resultado utilizando a query da forma como você fez, então parabéns pela query Julia :).

Agradecemos pelo seu feedback, continue assim e bons estudos!

Oi Daniela, obrigada pela resposta!

Eu fiquei mais com a dúvida porque achei que quando deu erro foi por que ele não utilizou nem o agregador MAX( ) nem colocou o campo no GROUP BY, ai realmente não funciona porque todos os campos precisam estar agrupados

Então Julia, isso ficou bem confuso mesmo e por isso ficou mais complicado de entender no momento o que estava acontecendo.