SQL - Contar valores en varias columnas

   
Vista:

Contar valores en varias columnas

Publicado por oknarf1976 (18 intervenciones) el 24/08/2015 15:30:28
Hola gente, que tal?
Les hago una consulta, talvez es basica, pero no entiendo mucho de sql.
Tengo la siguiente tabla, con unos 10000 registros:

id valor1 valor2 valor3 valor4 valor5 valor6

En las columnas VALOR, tengo cargados numeros del 00 al 99.

Lo que necesito saber, es cuales son los numeros que mas se repiten pero en todas las columnas.
Por ejemplo, esto es lo que me gustaria obtener como output:

VALOR CANTIDAD
00 1000 (SE REPITE 1000 VECES)
11 999 (SE REPITE 999 VECES)
21 888 (SE REPITE 888 VECES)

Osea, lo que necesito es un query que busque en cada columna y me diga cuantas veces se repite un numero.

Muchas gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Isaias

Contar valores en varias columnas

Publicado por Isaias (690 intervenciones) el 24/08/2015 19:09:48
¿En que motor estas trabajando?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Contar valores en varias columnas

Publicado por oknarf1976 (18 intervenciones) el 24/08/2015 22:04:56
Hola
Uso SQL 2008.
Muchas gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Contar valores en varias columnas

Publicado por leonardo_josue (877 intervenciones) el 24/08/2015 23:17:03
Hola oknarf1976:

La consulta que quieres es básica... con un SELECT - COUNT agrupando por el campo VALOR1 obtienes cuántas veces se repite cada valor en una columna... para considerar TODAS LAS COLUMNAS tienes que hacer un UNION ALL...

1
2
3
4
5
SELECT valor1 valor FROM tu_tabla
UNION ALL
SELECT valor2 valor FROM tu_tabla
....
SELECT valor6 valor FROM tu_tabla


Mete esto en una subconsulta y haz el SELECT-COUNT con la agrupación correspondiente.

Si tienes problemas, postea lo que intentaste hacer y con gusto te ayudamos a corregir/completar lo que tengas.

Saludos
Leo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Contar valores en varias columnas

Publicado por OKNARF1976 (18 intervenciones) el 26/08/2015 22:16:10
Hola Leo
Te cuento que el query que me pasaste, no me sirvio, no es lo que estoy buscando.
Lo resolvi de la siguiente manera, se que no es la mejor, y me lleva mucho trabajo revisar uno por uno los numeros, pero me sirve:

SELECT
N1=(SELECT Count(*) FROM mi_tabla WHERE n1 = 1),
N2=(SELECT Count(*) FROM mi_tabla WHERE n2 = 1),
N3=(SELECT Count(*) FROM mi_tabla WHERE n3 = 1),
N4=(SELECT Count(*) FROM mi_tabla WHERE n4 = 1),
N5=(SELECT Count(*) FROM mi_tabla WHERE n5 = 1),
N6=(SELECT Count(*) FROM mi_tabla WHERE n6 = 1)

De esta manera veo cuantas veces se repite el numero 1, en las 6 columnas.

Muchas gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Contar valores en varias columnas

Publicado por leonardo_josue (877 intervenciones) el 26/08/2015 22:33:23
Hola de Nuevo OKNARF197:

A qué te refieres con que la consulta que te puse no te sirvió??? ojo, yo sólo puse en ejemplo de lo que tenías que hacer, pero espero que no hayas copiado y pegado esperando el resultado que querías... La consulta funciona para lo que planteas, supongamos que tienes esta tabla:

1
2
3
4
5
6
7
8
9
10
11
mysql> SELECT * FROM tabla;
+----------+----------+----------+
| columna1 | columna2 | columna3 |
+----------+----------+----------+
|        1 |        2 |        3 |
|        4 |        2 |        1 |
|        3 |        1 |        1 |
|        2 |        4 |        5 |
|        1 |        1 |        1 |
+----------+----------+----------+
5 rows in set (0.00 sec)

Lo que puse en mi post fue que hicieras un UNION ALL con todas las columnas, es decir, algo como esto:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
mysql> SELECT columna1 columna FROM tabla
    -> UNION ALL
    -> SELECT columna2 columna FROM tabla
    -> UNION ALL
    -> SELECT columna3 columna FROM tabla;
+---------+
| columna |
+---------+
|       1 |
|       4 |
|       3 |
|       2 |
|       1 |
|       2 |
|       2 |
|       1 |
|       4 |
|       1 |
|       3 |
|       1 |
|       1 |
|       5 |
|       1 |
+---------+
15 rows in set (0.00 sec)

y en seguida puse:

1
Mete esto en una subconsulta y haz el SELECT-COUNT con la agrupación correspondiente.

por lo tanto, lo que tenías que hacer es esto:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
mysql> SELECT columna, COUNT(columna) total FROM
    -> (
    ->   SELECT columna1 columna FROM tabla
    ->   UNION ALL
    ->   SELECT columna2 columna FROM tabla
    ->   UNION ALL
    ->   SELECT columna3 columna FROM tabla
    -> ) T
    -> GROUP BY columna;
+---------+-------+
| columna | total |
+---------+-------+
|       1 |     7 |
|       2 |     3 |
|       3 |     2 |
|       4 |     2 |
|       5 |     1 |
+---------+-------+
5 rows in set (0.00 sec)

De esta manrea, en una sola "pasada" obtienes todos los números que tienes en tu tabla y el total de veces que aparecen en todas las columnas. ¿No es esto lo que necesitabas?, en donde está entonces el problema?

Saludos
Leo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar