Ah, tem um detalhe... Eu simplifiquei demais o exemplo =P Eu quero distinct por dois campos... Pq é assim..
Eu tenho um estabelecimento.. Ele pode ser destaque ou não.. Se for destaque, eu tenho que exibir ele duas vezes... E cada estabelecimento pode ter uma ou mais classificações... Então eu fiz: select * from (select estab_id, nome, destaque from estabelecimento where destaque = 1 union all select estab_id, nome, 0 from estabelecimento ) estab, inner join classificacao on ( estab_id = classi_id ) vai retornar algo como nome, destaque, classi_id Estab1,1,1 Estab1,1,2 Estab1,0,1 Estab1,0,2 Estab2,0,3 Estab2,0,4 Estab3,0,5 Se eu quiser mostrar por classificação, eu não faço nenhum group by e faço count(estab_id)... O problema é se eu quiser mostrar por Estabelecimento... Eu preciso fazer "group by Estab_id,destaque".. Assim eu fico com os grupos: 1,1 1,0 2,0 3,0 Se eu faço count(estab_id) ele me retorna: 2 2 2 1 Ou seja, me diz quantos dados tem em cada grupo... Se eu faço count(distinct(estab_id)) ele me retorna: 3 Pois ele não considera o Estab1 com destaque diferente do Estab1 sem destaque... O jeito que eu achei aqui foi criar um campo novo, concatenando os campos estab_id e destaque separados por virgula... assim, quando faço distinct nesse campo, ele analisa como: 1,1 1,0 2,0 3,0 E me retorna "4", como eu quero... É esse o melhor jeito mesmo, já que não tem como fazer distinct(campo1,campo2)?? 2009/7/17 André Volpato <[email protected]> > Wagner Bonfiglio escreveu: > > Olá senhores... > > > > Me deparei com um problema que parece primário, mas fiquei indignado > > por não conseguir resolver... > > > > Eu tenho um Group By e quero saber o número de "grupos" que retornou... > > > > Algo como: > > > > A | B > > -------- > > 0 | a > > 0 | b > > 0 | c > > 0 | d > > 1 | e > > 1 | f > > 1 | g > > 1 | h > > > > Select a, count(*) from tabela group by a; > > > > a | count > > ------------- > > 0 | 4 > > 1 | 4 > > > > Até aqui blz... > > > > Mas como eu faço para ele me dizer que retornou 2 "grupos"? > > > > Com: "select count(*) from tabela group by a" eu achei que resolveria, > > mas ele retorna o mesmo do passado, mas sem a coluna a, somento "4" e > > "4"... > > > > Cheguei a fazer uma coisa feia, mas que funcionava =P > > > > select count(*) from (select count(*) from tabela group by a) x > > > > Alguma outra sugestão? > > > > select count(distinct(a)) from tabela > > []´s > ACV > > _______________________________________________ > pgbr-geral mailing list > [email protected] > https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral >
_______________________________________________ pgbr-geral mailing list [email protected] https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
