1
resposta

Group by não agrupa

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 ?

1 resposta

Olá Thiego, tudo bem? Nossa! Isso é realmente muito estranho executei o mesmo comando que você colocou e funcionou corretamente, a saída foi a seguinte:

+-------------+---------------------+---------+-------------------+-------------------+--------------+
| cpf         | nome                | mes_ano | quantidade_vendas | quantidade_limite | status_venda |
+-------------+---------------------+---------+-------------------+-------------------+--------------+
| 1471156710  | Érica Carvalho      | 2015-01 |             24316 |             24500 | válida       |
| 1471156710  | Érica Carvalho      | 2015-02 |             22073 |             24500 | válida       |
| 1471156710  | Érica Carvalho      | 2015-03 |             22057 |             24500 | válida       |
| 1471156710  | Érica Carvalho      | 2015-04 |             19859 |             24500 | válida       |
| 1471156710  | Érica Carvalho      | 2016-08 |             20304 |             24500 | válida       |
| 1471156710  | Érica Carvalho      | 2016-09 |             19578 |             24500 | válida       |
| 19290992743 | Fernando Cavalcante | 2015-01 |             25366 |             20000 | inválida     |
| 19290992743 | Fernando Cavalcante | 2015-02 |             19711 |             20000 | válida       |
| 19290992743 | Fernando Cavalcante | 2015-03 |             21572 |             20000 | inválida     |
| 19290992743 | Fernando Cavalcante | 2015-04 |             23578 |             20000 | inválida     |
| 19290992743 | Fernando Cavalcante | 2015-05 |             22616 |             20000 | inválida    

Teve muitos outros resultados (acima foi só pra realmente mostrar que funcionar o GROUP BY), porém sim agrupou por CPF, e no caso todos os registros com o CPF 1471156710 que é da Érica Carvalho vinherem juntos em sequência e só depois que veio os registros do Fernando Cavalcante, e dos outros clientes.

Então é realmente estranho, você poderia enviar um print da tela para gente poderia verificar corretamente, para isso você pode colocar a imagem do imgur e colocar o link aqui pra gente verificar. E se poder colocar também a action que fica no painel Action Output que fica logo abaixo do resultado seria bom pra gente tentar verificar o problema.

Outra coisa, você poderia tentar executar o mesmo comando no terminal e também falar pra gente qual foi o resultado!