Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » PostgreSQL »

Buscar el más repetido

Estas en el tema de Buscar el más repetido en el foro de PostgreSQL en Foros del Web. Buenas tardes y Feliz Navidad a todos! (eso lo primero) Ahora entremos en harina. Tengo un problema con una consulta que no consigo (y ni ...
  #1 (permalink)  
Antiguo 28/12/2008, 12:56
 
Fecha de Ingreso: diciembre-2008
Mensajes: 5
Antigüedad: 15 años, 10 meses
Puntos: 0
Buscar el más repetido

Buenas tardes y Feliz Navidad a todos! (eso lo primero)

Ahora entremos en harina. Tengo un problema con una consulta que no consigo (y ni siquiera google me da respuesta)

Tengo una BBDD creada con PgAdmin. En una de las tablas guardo a los usuarios con sus datos y tal, entre ellos la provincia a la que pertenecen.

El problema me surge cuando quiero sacar cuál es la provincia que más usuarios tiene. Lo más cerca que me quedo de lo que busco es con:

select provincia, count(*) as veces from tabla_personas group by provincia order by veces desc

Esto me saca una tabla con los valores de las provincias ordenados descendentemente (la 1ª la que más personas tiene, y bajando)

Lo que necesito es conseguir sólo el máximo. Si limito a 1 lo consigo pero... ¿y si existen por ejemplo 3 provincias con igual número de personas? Estaría falseando datos

¿Alguna idea?

Un saludo
  #2 (permalink)  
Antiguo 30/12/2008, 11:59
 
Fecha de Ingreso: febrero-2007
Mensajes: 1.292
Antigüedad: 17 años, 9 meses
Puntos: 13
Respuesta: Buscar el más repetido

Para eso esta HAVING
Código:
select provincia, count(*) as veces from tabla_personas group by provincia 
having count(*) = (select count(*) from tabla_personas group by provincia order by count(*) desc limit 1);
Salu2
  #3 (permalink)  
Antiguo 30/12/2008, 12:44
 
Fecha de Ingreso: diciembre-2008
Mensajes: 5
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: Buscar el más repetido

Estupendo! Y consigue exactamente lo que quiero

Lástima que no conocía el poder del HAVING

Muchisimas gracias!
  #4 (permalink)  
Antiguo 03/01/2009, 08:34
 
Fecha de Ingreso: enero-2009
Mensajes: 4
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: Buscar el más repetido

También te sirve, y debería ser más rápida de ejecutar con LIMIT:

select provincia, count(*) as veces from tabla_personas group by provincia order by veces desc LIMIT 1

Saludos
  #5 (permalink)  
Antiguo 03/01/2009, 08:55
 
Fecha de Ingreso: febrero-2007
Mensajes: 1.292
Antigüedad: 17 años, 9 meses
Puntos: 13
Respuesta: Buscar el más repetido

Si te hubieras leido el primer post entero, verias porque no sirve LIMIT
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:36.