Olá, bom dia. Já perguntei isso em outra oportunidade, mas ele afirma no vídeo aos 9 minutos que o GROUP BY tem que ser com a função, sem o alias MES_ANO. É bem enfático nisso. Queria entender pq de não poder usar o alias.
Aliás (com acento mesmo), usei o alias onde ele fala pra não usar, e funciona perfeitamente.
SELECT X.CPF
, X.NOME
, X.MES_ANO
, X.QUANTIDADE_VENDAS
, X.QUANTIDADE_LIMITE,
CASE WHEN (X.QUANTIDADE_LIMITE - X.QUANTIDADE_VENDAS) < 0 THEN 'INVÁLIDA'
ELSE 'VÁLIDA' END AS STATUS_VENDA
FROM (
SELECT NF.CPF
, TC.NOME
, DATE_FORMAT(NF.DATA_VENDA, '%Y-%m') AS MES_ANO
, SUM(INF.QUANTIDADE) AS QUANTIDADE_VENDAS
, MAX(TC.VOLUME_DE_COMPRA) AS QUANTIDADE_LIMITE
FROM notas_fiscais AS NF
INNER JOIN itens_notas_fiscais AS INF
ON NF.NUMERO = INF.NUMERO
INNER JOIN tabela_de_clientes TC
ON TC.CPF = NF.CPF
GROUP BY NF.CPF, TC.NOME, MES_ANO
) X;
Na penúltima linha mesmo, ele usa:
GROUP BY NF.CPF, TC.NOME, DATE_FORMAT(NF.DATA_VENDA, '%Y-%m')