Confesso que estou quebrando a cabeça em alguns, mas deu certo
SELECT X.CPF, X.NOME, X.ANO, X.MES, X.QUANTIDADE_COMPRA, X.QUANTIDADE, X.QUANTIDADE_TOTAL, CASE
WHEN X.QUANTIDADE_TOTAL > X.QUANTIDADE THEN 'VALIDO'
ELSE 'INVALIDO'
END AS VALIDO, case
when X.QUANTIDADE_TOTAL < X.QUANTIDADE then
CONCAT(FLOOR((1 - (X.QUANTIDADE_TOTAL/X.QUANTIDADE)) * 100), '% E O VALOR FOI ', Abs(x.quantidade_total - x.quantidade))
else 0
end as ultrapassou
FROM (
select nf.cpf, tc.nome, year(data_venda) as ano, month(data_venda) as mes, count(*) as quantidade_compra
, sum(quantidade) as quantidade, max(tc.volume_de_compra) as quantidade_total
from notas_fiscais nf
inner join itens_notas_fiscais inf
on nf.NUMERO = inf.numero
inner join tabela_de_clientes tc
on tc.cpf = nf.cpf
group by nf.cpf, mes, ano, tc.nome) X
ORDER BY X.QUANTIDADE DESC