entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

2votos

¿Como sacar el conteo total de números repetidos en varias columnas?

Hola a todos!

Tengo unos valores en una tabla parecidos a la primitiva:


Columna1   | Columna2 | Columna3 
===================================
  1        |     2     |    7      
  2        |     25    |   30       
  3        |     7     |   23     
  7        |     9     |   12    

Estoy tratando de conseguir una lista de los numeros y las veces que se repiten pero totales, sin ser por columna y es ahí justo donde tengo el problema

 Numero  |  Veces
 ==========================
 1       |   1
 2       |   2
 3       |   1
 7       |   3
 9       |   1
 12      |   1
 23      |   1
 25      |   1
 30      |   1

Se sacar cada columna por separado:

Select col1,count(*) from mitabla group by col1

Lo que puedo hacer es sino sumarlas en php, pero me gustaria si alguien me puede hechar una mano para sumar algo asi en consulta SQL:

Select col1,count(*) from mitabla group by col1
+
Select col2,count(*) from mitabla group by col2
+
Select col3,count(*) from mitabla group by col3

DONDE NUM1=NUM2=NUM3

He creado un SQL fiddle para que se vea mejor:
http://sqlfiddle.com/#!9/5b5a1/10/0

Espero que se me entienda, y a ver si alguien me saca de dudas
Muchas gracias!

2 Respuestas

3votos

Leonardo-Tadei Puntos227320

Hola @kalua66,

esta es la query que estás buscando:

SELECT col, SUM(veces) AS total FROM (
  select col1 AS col,count(*) AS veces from mi_tabla group by col1
  UNION ALL
  select col2 AS col,count(*) AS veces from mi_tabla group by col2
  UNION ALL
  select col3 AS col,count(*) AS veces from mi_tabla group by col3
) AS Resultado
GROUP BY col

Saludos cordiales

1voto

kalua66 comentado

Genial !!

Tal cual lo que buscaba, ademas creo que he aprendido bastante, tanto buscando, como con esta solución !

Mil gracias a ambos !!

1voto

cobasESP Puntos19650

has probado con:

SELECT DISTINCT col1, sum(count(col1),count(col2),count(col3)) as total
FROM mitabla group by col1;

coges los numeros de la col1 (o de las 3 a la vez si quieres), y el la siguiente columna te cuenta todos los numeros que sean de la col1 ya que los agrupas con el group by, no se si estará bien montada la consulta a o faltara algo, pero mas o menos sería algo asi. Prueba a igualar los numeros que encuentras con un where a los de la col 1

0voto

kalua66 comentado

Gracias por constestar! :)

No he podido probar esa consulta, algo falla en la sintaxis.. :(

He conseguido llegar a unir todas las columnas en un solo resultado, ya solo me faltaría que después de eso se agruparan por numero..

He creado un SQL fiddle para que se vea mejor:
http://sqlfiddle.com/#!9/5b5a1/10/0

¿Alguna idea ?

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta