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

Contar numero de datos

Estas en el tema de Contar numero de datos en el foro de Mysql en Foros del Web. Buenas, quisiera que me ayudaran en una consulta para contar el numero de columnas. Tengo una tabla en la que en una columna se especifica ...
  #1 (permalink)  
Antiguo 31/05/2013, 13:50
 
Fecha de Ingreso: noviembre-2012
Mensajes: 5
Antigüedad: 11 años, 4 meses
Puntos: 0
Contar numero de datos

Buenas, quisiera que me ayudaran en una consulta para contar el numero de columnas.

Tengo una tabla en la que en una columna se especifica una aseguradora y en la otra una descripcion del servicio realizado:

Aseguradora 1 - Servicio 1
Aseguradora 2 - Servicio 1
Aseguradora 2- Servicio 1
Aseguradora 1 - Servicio 2
...

Lo que quisiera hacer es mostrar por cada aseguradora la cantidad de distintos servicios que se realizaron. Algo así como:

Aseguradora 1 - (1)Servicio 1, (1) Servicio 2
Aseguradora 2 - (2)Servicio 1

¿como podría hacer la consulta para contarlos?
  #2 (permalink)  
Antiguo 31/05/2013, 14:15
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Respuesta: Contar numero de datos

Hola Norld:

Muchas veces en este foro hemos hablado de este tipo de consultas... te recomiendo que para la próxima te tomes unos minutos para utilizar la herramienta de búsqueda que proporciona el foro o que le preguntes a SAN GOOGLE, el generalmente tiene la respuesta.

Hay varias formas de hacer lo que quieres, si sabes los servicios que existen en tu tabla, podrías hacer algo como esto:

Código MySQL:
Ver original
  1. mysql> SELECT * FROM tabla;
  2. +---------------+------------+
  3. | aseguradora   | servicio   |
  4. +---------------+------------+
  5. | Aseguradora 1 | Servicio 1 |
  6. | Aseguradora 2 | Servicio 1 |
  7. | Aseguradora 2 | Servicio 1 |
  8. | Aseguradora 1 | Servicio 2 |
  9. +---------------+------------+
  10. 4 rows in set (0.01 sec)
  11.  
  12. mysql> SELECT
  13.     ->    aseguradora,
  14.     ->    SUM(IF(servicio = 'Servicio 1', 1, 0)) servicio_1,
  15.     ->    SUM(IF(servicio = 'Servicio 2', 1, 0)) servicio_2
  16.     -> FROM tabla
  17.     -> GROUP BY aseguradora;
  18. +---------------+------------+------------+
  19. | aseguradora   | servicio_1 | servicio_2 |
  20. +---------------+------------+------------+
  21. | Aseguradora 1 |          1 |          1 |
  22. | Aseguradora 2 |          2 |          0 |
  23. +---------------+------------+------------+
  24. 2 rows in set (0.00 sec)

Agregando un SUM-IF por cada servicio... también podrías utilizar la función GROUP_CONCAT:

Código MySQL:
Ver original
  1. mysql> SELECT aseguradora, GROUP_CONCAT('(', total, ')', servicio) total FROM
  2.     -> (
  3.     ->    SELECT aseguradora, servicio, COUNT(*) total
  4.     ->    FROM tabla GROUP BY aseguradora, servicio
  5.     -> ) T
  6.     -> GROUP BY aseguradora;
  7. +---------------+-----------------------------+
  8. | aseguradora   | total                       |
  9. +---------------+-----------------------------+
  10. | Aseguradora 1 | (1)Servicio 1,(1)Servicio 2 |
  11. | Aseguradora 2 | (2)Servicio 1               |
  12. +---------------+-----------------------------+
  13. 2 rows in set (0.03 sec)

Saludos
Leo.

Etiquetas: numero, tabla
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 00:56.