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

¿Cómo armar consulta por mes e id?

Estas en el tema de ¿Cómo armar consulta por mes e id? en el foro de Mysql en Foros del Web. Muy buenas a todos. Necesito hacer una serie de estadísticas basadas en las actas cargadas en el sistema. Básicamente deben ser estadísticas agrupadas por mes ...
  #1 (permalink)  
Antiguo 22/08/2015, 09:53
Avatar de kurt_fj  
Fecha de Ingreso: septiembre-2006
Mensajes: 10
Antigüedad: 17 años, 6 meses
Puntos: 0
Exclamación ¿Cómo armar consulta por mes e id?

Muy buenas a todos.

Necesito hacer una serie de estadísticas basadas en las actas cargadas en el sistema. Básicamente deben ser estadísticas agrupadas por mes y por id. Planeo usar Highcharts (Gráficos en Javascript) para representar los datos de la consulta.

Dejo una imagen del modelo de la Base de Datos: [URL="https://www.dropbox.com/s/1bdeiuurnwm0mnr/CAPD343%283%29.png?dl=0"]Ver[/URL]

Una de las consultas sería mostrar los 5 puestos que más han cargado actas en cada mes. Dejo la estructura de las tablas involucradas:

Código SQL:
Ver original
  1. MariaDB [mydb]> DESC companias;
  2. +--------------+---------------------+------+-----+---------+----------------+
  3. | FIELD        | TYPE                | NULL | KEY | DEFAULT | Extra          |
  4. +--------------+---------------------+------+-----+---------+----------------+
  5. | companias_id | tinyint(3) UNSIGNED | NO   | PRI | NULL    | AUTO_INCREMENT |
  6. | compania     | VARCHAR(45)         | NO   |     | NULL    |                |
  7. | activo       | tinyint(1)          | NO   |     | 1       |                |
  8. +--------------+---------------------+------+-----+---------+----------------+
  9.  
  10. MariaDB [mydb]> DESC puestos;
  11. +-----------------+----------------------+------+-----+---------+----------------+
  12. | FIELD           | TYPE                 | NULL | KEY | DEFAULT | Extra          |
  13. +-----------------+----------------------+------+-----+---------+----------------+
  14. | puestos_id      | SMALLINT(3) UNSIGNED | NO   | PRI | NULL    | AUTO_INCREMENT |
  15. | fk_companias_id | tinyint(3) UNSIGNED  | NO   | MUL | NULL    |                |
  16. | puesto          | VARCHAR(45)          | NO   | UNI | NULL    |                |
  17. | activo          | tinyint(1)           | NO   |     | 1       |                |
  18. +-----------------+----------------------+------+-----+---------+----------------+
  19.  
  20. MariaDB [mydb]> DESC actas;
  21. +------------------------+--------------------------------+------+-----+---------+-------+
  22. | FIELD                  | TYPE                           | NULL | KEY | DEFAULT | Extra |
  23. +------------------------+--------------------------------+------+-----+---------+-------+
  24. | acta_id                | VARCHAR(25)                    | NO   | PRI | NULL    |       |
  25. | fk_fiscales_fis_cedula | VARCHAR(11)                    | NO   | MUL | NULL    |       |
  26. | fk_entes_receptores_id | tinyint(3) UNSIGNED            | NO   | MUL | NULL    |       |
  27. | fk_puestos_id          | SMALLINT(3) UNSIGNED           | NO   | MUL | NULL    |       |
  28. | fk_usuarios_id         | INT(10) UNSIGNED               | NO   | MUL | NULL    |       |
  29. | tipo_acta              | enum('penal','administrativa') | NO   |     | NULL    |       |
  30. | fecha                  | DATE                           | NO   |     | NULL    |       |
  31. | f_creacion             | datetime                       | YES  |     | NULL    |       |
  32. | f_modificacion         | datetime                       | YES  |     | NULL    |       |
  33. | descripcion            | text                           | YES  |     | NULL    |       |
  34. +------------------------+--------------------------------+------+-----+---------+-------+

Al hacer:

Código MySQL:
Ver original
  1. concat_ws(' ', co.compania, ' Compañía: ', pu.puesto) 'name',
  2. count(ac.fk_puestos_id) 'data'
  3. FROM actas ac
  4. INNER JOIN puestos pu
  5. ON pu.puestos_id = ac.fk_puestos_id
  6. INNER JOIN companias co
  7. ON co.companias_id = pu.fk_companias_id
  8. WHERE pu.activo = 1 AND co.activo = 1
  9. GROUP BY name, YEAR(f_creacion), MONTH(f_creacion)
  10. LIMIT 0,5;

Obtengo:

Código SQL:
Ver original
  1. +------------------------------------------------+------+
  2. | name                                           |DATA |
  3. +------------------------------------------------+------+
  4. | Primera  Compañía:  Sub Frente Chino Palmasola |    4 |
  5. | Quinta  Compañía:   Zaraza                     |    2 |
  6. | Primera  Compañía:  chaguaramas                |    1 |
  7. | Primera  Compañía:  Sub Frente Chino Palmasola |    1 |
  8. | Tercera  Compañía:  Puesto Cabruta             |    1 |
  9. +------------------------------------------------+------+

primera Compañía: Sub Frente Chino Palmasola se muestra en dos oportunidades pues tiene actas cargadas en dos meses distintos.

¿Cómo puedo hacer que se muestren de esta forma? (suponiendo que hay más valores en data)

Código SQL:
Ver original
  1. +------------------------------------------------+---------+
  2. | name                                           | DATA    |
  3. +------------------------------------------------+---------+
  4. | Primera  Compañía:  Sub Frente Chino Palmasola | 4, 1, 3 |
  5. | Quinta  Compañía:   Zaraza                     | 2, 3    |
  6. | Primera  Compañía:  chaguaramas                | 1, 5, 6 |
  7. | Tercera  Compañía:  Puesto Cabruta             | 1       |
  8. +------------------------------------------------+---------+
Donde en data se agrupen las sumas de las actas cargadas por mes.

No se por donde comenzar, agradecería cualquier ayuda o idea.

Última edición por kurt_fj; 22/08/2015 a las 09:57 Razón: Un acento de más.
  #2 (permalink)  
Antiguo 25/08/2015, 08:36
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Respuesta: ¿Cómo armar consulta por mes e id?

Hola kurt_fj:

Investiga cómo trabaja la función de agrupación GROUP_CONCAT.

Saludos
Leo.
  #3 (permalink)  
Antiguo 27/08/2015, 10:13
 
Fecha de Ingreso: abril-2015
Ubicación: Castelldefels
Mensajes: 76
Antigüedad: 9 años
Puntos: 3
Respuesta: ¿Cómo armar consulta por mes e id?

Hola ! Aquí hay un ejemplo de lo que quieres:

http://www.artfulsoftware.com/infotree/qrytip.php?id=78

Slds,
  #4 (permalink)  
Antiguo 28/08/2015, 22:30
Avatar de kurt_fj  
Fecha de Ingreso: septiembre-2006
Mensajes: 10
Antigüedad: 17 años, 6 meses
Puntos: 0
Respuesta: ¿Cómo armar consulta por mes e id?

Gracias por las respuestas.

Leonardo_josue, revisaré la función GROUP_CONCAT como comentas.

Jlusc98, gracias por el link. Seguramente me servirá de mucho.

Cuando logre armar la consulta la publicaré en este tema.

Etiquetas: dudas, mysql+consulta
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:56.