Glauco,
dá esse erro : -Invalid expression in the select list (not contained in either an aggregate fun ction or the GROUP BY clause)
o que está difícil entrar na minha cabeça é o porque que pessoas colocam mais de uma coluna no group by e no order by , o MySql eu sempre uso apenas uma coluna, Estou há dias tentando agrupar no firebird.
pmlm1 like
Se estás a agrupar por idade, não podes ter nome e numero no teu select. Ou agrupas também por esses campos ou tiras do select.
O resultado que quero é exatamente esse, mas esse select não roda no firebird.
Queria um select do firebird que tivesse o mesmo resultado do MySql.
Quero o mesmo resultado no firebird que é possível no Mysql usando: select nome, sexo, idade from teste group by idade;
Já estou há dias tentando, não abandonem esse tópico.
pmlm
Nem faz sentido funcionar. Qual o critério para aparecer ali João e não José ou Carlos? Qualquer dos 3 seria válido de aparecer ali.
TerraSkilll2 likes
Parece uma sintaxe especial do MySQL, que pega o primeiro registro referente ao campo agrupado (idade, nesse caso). Eu realmente não esperaria que isso funcionasse, e também não faz muito sentido pra mim. Mas, enfim…
De qualquer forma, no Firebird dá pra fazer algo assim:
Pode ser que haja uma sintaxe melhor ou alguma função que faça isso, mas eu particularmente não conheço. Order by pode ser necessário para determinar qual registro retornar, mas fiz sem e obtive o mesmo resultado.
Abraços.
jonas.cant1 like
Estou até agora tentando entender qual a sua necessidade e não cheguei numa conclusão.
Você quer saber a quantidade de pessoas por sexo?
Você quer saber a quantidade de pessoas por idade?
Explica melhor o que você realmente deseja fazer.
I
Igor_Lisboa
Jonas.cant,
Minha necessidade não é pra esse select, esse é um exemplo, mas se conseguir com esse eu consigo no outro, coloquei um simples pra ficar mais fácil de eu enteder.
I
Igor_Lisboa
TerraSkilll,
Vou testar com esse e posto o resultado.
4mega1 like
Faça o seguinte teste:
Select SUM(sexo) as teste, MAX(idade), nome, MAX(numero) from pessoas group by nome;
Depois esse:
Select SUM(sexo) as teste, idade, nome, numero from pessoas group by idade, nome, numero;
I
Igor_Lisboa
Usando o MAX( ) funcionou perfeitamente.
Mas fiquei com uma dúvida, como o MAX retorna o maior valor, pode acontecer de algumas linhas ser descartadas do select ?
4mega1 like
A soma funcionará normalmente, nenhum registro será descartado até onde sei. Só testando para ver.