Uma ajuda na Query

6 respostas
G

ae pessoal, estou precisando fazer uma consulta da seguinte situação:

por exemplo uma tabela ocorrência:

id id_usuario ocorrência
1 1 A
2 1 A
3 1 B
4 2 C
5 2 C
6 3 A
7 3 A
8 3 A
9 1 C

eu precisava que a consulta me retornasse apenas o id do usuario que tiver a menor quantidade de ocorrências nesta tabela… Aqui neste caso seria o id=2

como faço isso???

value!

6 Respostas

Zeed01

Boa tarde Galera !

Que tal agrupar pelo id_usuario, mandar contar e ordenar pela qtde ?

Só que acho que falta uma politica de desempate ai…

[]s

ManoJava


Que tal agrupar pelo id_usuario, mandar contar e ordenar pela qtde ?

Só que acho que falta uma politica de desempate ai…

Realmente pois parece que tem mais de um id com o mesmo numero de ocorrencias, no caso minimo de ocorrencias.

Att.

Zeed01

Boa tarde galera !

Fiz um teste com uma tabela minha aqui e ficou assim:

select count(*), id_usuario
from tb_a
group by id_usuario
order by count(*) asc

O retorno pra mim foi:
count(*) id_usuario
1 69
39 171
43 685
286 523
790 255
1011 415
1059 595
1079 494

Ai seria só pegar o primeiro registro…

Mas caso tivesse outro usuário com somente uma ocorrência teria que saber qual pegar.

[]s

G

Zeed01,

e ai cara, blz?

eu fiz esta consulta assim:

select id_usuario, count(*) as RESID from tabela_qualquer group by id_usuario…

blz, aqui me traz o count de cada id que aparece nesta tabela…

mais ou menos assim:

1 4
2 2
3 3

neste caso eu queria que viesse apesas o id 2…

mesmo que em hipotese viesse varias quantidade de ids iguais… na aplicação, eu preciso pegar apenas um… neste caso é por escolha aleatoria se vier varios… mas caso venha o que tiver menor ocorrencia eu precisava deste fulano… ta f****

nem faço ideia de como fazer isso

G

Opaaaa

Zeed01,

pra mim ficou perfeito… pq na verdade eu não precisava filtrar por tipo de ocorrencia, mas so o usuario que tivesse menor numero de ocorrencias registradas para ele… Pq esta tabela pra mim é um delegação de responsabilidade… qdo o usuario delegar uma ocoorencia, era so setar para quem tivesse com a lista menor…

vlwwwwwwwwww!

Zeed01

Boa tarde Galera !

globsglobs

Se no caso de ter mais de um id com a mesma qtde de registros serve qualquer um, não vejo onde esta o problema.
Você vai utilizar o resultado desse select onde ? Em uma classe Java ?

Se for é só pegar a primeira linha do recordset que retorna a consulta… se você acrescentar na sua query o order by count(*) asc, vai ter sempre na primeira linha o usuario que tem menos ocorrencias…

Bom… tem mais uma coisa que pode fazer caso precise que volte somente UM registro, sendo o id do usuario o que tem menos ocorrencias:
Tenta isso:

select * from 
(select id_usuario, count(*) as RESID 
from tabela_qualquer 
group by id_usuario 
order by RESID asc) t1
where rownum <= 1

Nesse caso rownum sei que existe no oracle, no sqlserver, se não estou enganado, existe mas tem outro nome… ou seja, vai estar amarrado ao banco que estiver usando.

[]s

Criado 26 de janeiro de 2010
Ultima resposta 26 de jan. de 2010
Respostas 6
Participantes 3