Tentei de tudo aqui mas não fica agrupado na ordem nem de cpf, nem de nome
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 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, tc.nome, date_format(nf.data_venda, '%Y-%m')) x;
Exemplo de como fica :
7771579779 Marcelo Mattos 2015-01 24879 20000 inválida
50534475787 Abel Silva 2015-01 23176 26000 válida
8502682733 Valdeci da Silva 2015-01 21986 19000 inválida
5840119709 Gabriel Araujo 2015-01 23106 21000 inválida
1471156710 Érica Carvalho 2015-01 24316 24500 válida
94387575700 Walber Lontra 2015-01 22180 12000 inválida
3623344710 Marcos Nougeuira 2015-01 20593 22000 válida
5576228758 Petra Oliveira 2015-01 21563 16000 inválida
19290992743 Fernando Cavalcante 2015-01 25366 20000 inválida
492472718 Eduardo Jorge 2015-01 17615 9500 inválida
8719655770 Carlos Eduardo 2015-01 22064 24000 válida
2600586709 César Teixeira 2015-01 19692 22000 válida
5648641702 Paulo César Mattos 2015-01 20072 22000 válida
Por que será que o group by não funciona ?