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

datos mas repetido en un select

Estas en el tema de datos mas repetido en un select en el foro de Mysql en Foros del Web. Hola todos tengo un listado de registros en una tabla en la cual se pueden repetir datos, necesito sacar el dato que mas se repite ...
  #1 (permalink)  
Antiguo 27/10/2008, 08:44
Avatar de barba negra  
Fecha de Ingreso: mayo-2003
Ubicación: bogota
Mensajes: 91
Antigüedad: 20 años, 11 meses
Puntos: 0
datos mas repetido en un select

Hola todos


tengo un listado de registros en una tabla en la cual se pueden repetir datos, necesito sacar el dato que mas se repite dentro de la tabla...

Quien me pueda ayudar


gracias
__________________
quien se duerme se lo lleva la corriente.......

  #2 (permalink)  
Antiguo 27/10/2008, 09:35
 
Fecha de Ingreso: julio-2005
Mensajes: 24
Antigüedad: 18 años, 9 meses
Puntos: 0
Respuesta: datos mas repetido en un select

¿y que quieres comparar todos los datos de tu DB?
  #3 (permalink)  
Antiguo 27/10/2008, 09:46
Avatar de barba negra  
Fecha de Ingreso: mayo-2003
Ubicación: bogota
Mensajes: 91
Antigüedad: 20 años, 11 meses
Puntos: 0
Respuesta: datos mas repetido en un select

Cita:
Iniciado por sagaru Ver Mensaje
¿y que quieres comparar todos los datos de tu DB?
lo que requiero es en un campo determinado en el registo. el cual es comun que se repitan los datos almacenado. El objetivo es sacar un reporte que me muestre el dato mas repetido en ese campo. No se si quedo claro en mi explicacion


gracias
__________________
quien se duerme se lo lleva la corriente.......

  #4 (permalink)  
Antiguo 28/10/2008, 05:00
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: datos mas repetido en un select

Quizás sea esto lo que quieres:
Código sql:
Ver original
  1. SELECT COUNT( nombrecampo) maximo
  2. FROM nombretabla
  3. GROUP BY nombrecampo
  4. ORDER BY maximo DESC LIMIT 1
  #5 (permalink)  
Antiguo 28/10/2008, 06:46
 
Fecha de Ingreso: julio-2005
Mensajes: 24
Antigüedad: 18 años, 9 meses
Puntos: 0
Respuesta: datos mas repetido en un select

jurena, pero a sí te saca el numero de repeticiones del valor más repetido, pero no el propio valor....
  #6 (permalink)  
Antiguo 28/10/2008, 07:20
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: datos mas repetido en un select

Habría que probar:
Código sql:
Ver original
  1. SELECT COUNT(nombrecampo) maximo, nombrecampo valor
  2. FROM nombretabla
  3. GROUP BY maximo
  4. ORDER BY maximo DESC LIMIT 1
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #7 (permalink)  
Antiguo 28/10/2008, 09:26
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: datos mas repetido en un select

Perdonad, pero no estaba centrado. Es cierto lo que dices, Sagaru, y para conseguir eso, yo haría esto:
Código sql:
Ver original
  1. SELECT nombrecampo AS valor, COUNT( * ) AS veces
  2. FROM nombretabla t
  3. GROUP BY nombrecampo
  4. HAVING veces = (
  5. SELECT COUNT( * ) maximo
  6. FROM nombretabla
  7. GROUP BY nombrecampo
  8. ORDER BY maximo DESC
  9. LIMIT 1 )

Ah, y cuando hay más de uno, te los selecciona todos los valores que tienen ese número máximo

Última edición por jurena; 28/10/2008 a las 09:38
  #8 (permalink)  
Antiguo 28/10/2008, 10:26
 
Fecha de Ingreso: julio-2005
Mensajes: 24
Antigüedad: 18 años, 9 meses
Puntos: 0
Respuesta: datos mas repetido en un select

jurena ahora lo has liado demasiado jejejjeje

Modificando el código de gnzsoloyo valdria :

Código:
SELECT nombrecampo, COUNT(nombrecampo) maximo
FROM nombretabla
GROUP BY maximo
ORDER BY maximo DESC LIMIT 1
  #9 (permalink)  
Antiguo 28/10/2008, 10:43
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: datos mas repetido en un select

sagaru,

a mí eso no me funciona, pues, al menos en PHPMyAdmin no me permite agrupar por el campo que es fruto de la propia agrupación, es decir, maximo. Y por otra parte, si hubiese más de un valor que tuviera el mismo número de veces, sólo me mostraría el primero.
O eso, o que "se me han cruzado los cables".
  #10 (permalink)  
Antiguo 28/10/2008, 12:26
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: datos mas repetido en un select

Tienes razón jurena, se me pasó por alto el detalle (distracciones del momento).
La cosa entonces debería:
Código sql:
Ver original
  1. SELECT nombrecampo, COUNT(nombrecampo) maximo
  2. FROM nombretabla
  3. GROUP BY nombrecampo
  4. ORDER BY maximo DESC LIMIT 1
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #11 (permalink)  
Antiguo 28/10/2008, 12:40
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: datos mas repetido en un select

gnzsoloyo,

esa sería la solución si siempre fuera uno el que tuviera el máximo, y es la solución más eficiente; pero si tenemos dos valores o más con el mismo número de apariciones máximas, habrá que recurrir a alguna otra propuesta como la que hice, que, según creo, valdría para todos los casos.
  #12 (permalink)  
Antiguo 28/10/2008, 13:02
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: datos mas repetido en un select

Exacto, eso sería algo así:
Código sql:
Ver original
  1. SELECT nombrecampo, COUNT(nombrecampo) maximo
  2. FROM nombretabla
  3. GROUP BY nombrecampo
  4. HAVING COUNT(nombrecampo) = maximo;

Tengo que probar cómo funciona, pero por allí andaba la cosa.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #13 (permalink)  
Antiguo 28/10/2008, 13:44
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: datos mas repetido en un select

Esa no obtiene el máximo. Tampoco sirve, pero es estructuralmente igual que la que yo propuse con la diferencia de que la equivalencia se hace con el count, pero el count no es el máximo. Para eso habría que hacer el select.

Última edición por jurena; 28/10/2008 a las 13:50
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 15:27.