Ver Mensaje Individual
  #2 (permalink)  
Antiguo 05/01/2012, 15:45
leonardo_josue
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 4 meses
Puntos: 447
Respuesta: Consulta MySQL Group by

Hola iavellaneda:

Hay varias formas en las que puedes resolver este problema. Una de las maneras más comunes es más o menos así:

Código MySQL:
Ver original
  1. mysql> CREATE TABLE tabla (Incidencia VARCHAR(10), Fecha DATE);
  2. Query OK, 0 rows affected (0.19 sec)
  3.  
  4. mysql> INSERT INTO tabla VALUES
  5.     -> ('Mouse', '2012-01-03'),
  6.     -> ('Teclado', '2012-01-03'),
  7.     -> ('Teclado', '2012-02-04'),
  8.     -> ('Booteo', '2012-03-01'),
  9.     -> ('Mouse', '2011-01-12'),
  10.     -> ('Booteo', '2011-02-12');
  11. Query OK, 6 rows affected (0.06 sec)
  12. Records: 6  Duplicates: 0  Warnings: 0
  13.  
  14. mysql> SELECT * FROM tabla;
  15. +------------+------------+
  16. | Incidencia | Fecha      |
  17. +------------+------------+
  18. | Mouse      | 2012-01-03 |
  19. | Teclado    | 2012-01-03 |
  20. | Teclado    | 2012-02-04 |
  21. | Booteo     | 2012-03-01 |
  22. | Mouse      | 2011-01-12 |
  23. | Booteo     | 2011-02-12 |
  24. +------------+------------+
  25. 6 rows in set (0.00 sec)
  26.  
  27. mysql> SELECT
  28.     -> incidencia,
  29.     -> SUM(IF(MONTH(fecha) = 1, 1, 0)) enero,
  30.     -> SUM(IF(MONTH(fecha) = 2, 1, 0)) febrero,
  31.     -> SUM(IF(MONTH(fecha) = 3, 1, 0)) marzo
  32.     -> FROM tabla
  33.     -> GROUP BY incidencia;
  34. +------------+-------+---------+-------+
  35. | incidencia | enero | febrero | marzo |
  36. +------------+-------+---------+-------+
  37. | Booteo     |     0 |       1 |     1 |
  38. | Mouse      |     2 |       0 |     0 |
  39. | Teclado    |     1 |       1 |     0 |
  40. +------------+-------+---------+-------+
  41. 3 rows in set (0.00 sec)

Aquí tendrías que completar todos los SUM, uno para cada mes. De esta manera, los meses que no tengan información simplemente aparecen con cero. Sólo hay que tener cuidado de evaluar un año a la vez, ya que si no lo haces entonces sumaria los registros independientemente del año.

Dale un vistazo al código para ver si te sirve.

Saludos
Leo.