quem fez o exercício usando apenas o inner join sem utilizar as subquerys não consegue utilizar o WHERE SUM(INF.[QUANTIDADE]) > C.[VOLUME DE COMPRA], aparece o seguinte erro:
"Uma agregação não pode aparecer na cláusula WHERE, a menos que esteja em uma subconsulta contida em uma cláusula HAVING ou uma lista de seleção, e a coluna que está sendo agregada seja uma referência externa."
mas é possível utilizando o HAVING após o GROUP BY
SELECT C.NOME, SUBSTRING(CONVERT(VARCHAR, NF.[DATA], 120), 1, 7) AS ANO_MES, SUM(INF.[QUANTIDADE]) AS QUANTIDADE_MES, C.[VOLUME DE COMPRA] AS QNT_AUTORIZADA,
CONVERT(DECIMAL(15,2), (1 - (C.[VOLUME DE COMPRA]/SUM(INF.[QUANTIDADE]))) * 100) AS VARIACAO,
CASE WHEN SUM(INF.[QUANTIDADE]) <= C.[VOLUME DE COMPRA] THEN 'AUTORIZADO'
WHEN SUM(INF.[QUANTIDADE]) > C.[VOLUME DE COMPRA] THEN 'INVÁLIDO'
END AS STATUS_VENDA
FROM [ITENS NOTAS FISCAIS] INF
INNER JOIN [NOTAS FISCAIS] NF ON NF.NUMERO = INF.NUMERO
INNER JOIN [TABELA DE CLIENTES] C ON C.CPF = NF.CPF
--WHERE SUM(INF.[QUANTIDADE]) > C.[VOLUME DE COMPRA]
GROUP BY C.NOME, SUBSTRING(CONVERT(VARCHAR, NF.[DATA], 120), 1, 7), C.[VOLUME DE COMPRA]
HAVING SUM(INF.[QUANTIDADE]) > C.[VOLUME DE COMPRA]
ORDER BY C.NOME, SUBSTRING(CONVERT(VARCHAR, NF.[DATA], 120), 1, 7)