Ver Mensaje Individual
  #2 (permalink)  
Antiguo 22/08/2012, 13:44
leonardo_josue
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 10 meses
Puntos: 447
Respuesta: Agrupar x meses

Hola tumbero_x:

No me queda claro cómo es que necesitas presentar la información... creo que sería conveniente en primer lugar que nos digas cuál es la estructura de tu tabla, que nos pongas algunos datos de ejemplo y que nos digas exactamente qué es lo que pretendes obtener como salida... a partir de lo que trataste de explicar se me ocurren dos posible soluciones. Checa este script:


Código MySQL:
Ver original
  1. mysql> SELECT * FROM compras;
  2. +-----------+--------------+----------+
  3. | compra_id | compra_fecha | cantidad |
  4. +-----------+--------------+----------+
  5. |         1 | 2012-08-22   |       10 |
  6. |         1 | 2012-09-22   |       12 |
  7. |         1 | 2012-09-22   |       15 |
  8. |         2 | 2012-10-22   |       13 |
  9. |         2 | 2012-07-22   |       11 |
  10. |         2 | 2012-08-22   |        8 |
  11. |         3 | 2012-08-22   |       16 |
  12. |         3 | 2012-07-22   |        6 |
  13. |         3 | 2012-07-22   |        7 |
  14. |         3 | 2012-07-22   |        9 |
  15. +-----------+--------------+----------+
  16. 10 rows in set (0.00 sec)
  17.  
  18. mysql> SELECT
  19.     ->   CASE
  20.     ->   WHEN MONTH(compra_fecha) = 7 THEN "jul"
  21.     ->   WHEN MONTH(compra_fecha) = 8 THEN "ago"
  22.     ->   WHEN MONTH(compra_fecha) = 9 THEN "sep"
  23.     ->   WHEN MONTH(compra_fecha) = 10 THEN "oct"
  24.     ->   END mes,
  25.     ->   COUNT(*)
  26.     -> FROM compras
  27.     -> GROUP BY mes;
  28. +------+----------+
  29. | mes  | COUNT(*) |
  30. +------+----------+
  31. | ago  |        3 |
  32. | jul  |        4 |
  33. | oct  |        1 |
  34. | sep  |        2 |
  35. +------+----------+
  36. 4 rows in set (0.00 sec)
  37.  
  38. mysql> SELECT
  39.     ->   compra_id,
  40.     ->   SUM(IF(MONTH(compra_fecha) = 7, 1, 0)) 'jul',
  41.     ->   SUM(IF(MONTH(compra_fecha) = 8, 1, 0)) 'ago',
  42.     ->   SUM(IF(MONTH(compra_fecha) = 9, 1, 0)) 'sep',
  43.     ->   SUM(IF(MONTH(compra_fecha) = 10, 1, 0)) 'oct'
  44.     -> FROM compras
  45.     -> GROUP BY compra_id;
  46. +-----------+------+------+------+------+
  47. | compra_id | jul  | ago  | sep  | oct  |
  48. +-----------+------+------+------+------+
  49. |         1 |    0 |    1 |    2 |    0 |
  50. |         2 |    1 |    1 |    0 |    1 |
  51. |         3 |    3 |    1 |    0 |    0 |
  52. +-----------+------+------+------+------+
  53. 3 rows in set (0.00 sec)

En el primero de los casos, te muestra el total de compras por mes, en forma de renglones, pero sin considerar los compras_id's... en el segundo caso presenta el total de compras por mes, pero en forma de columnas, y aquí sí considerando el id de la compra... checa ambas consultas y di si alguna de estas es lo que pretendes, sino trata de de explicar mejor tu problema y con gusto tratamos de ayudarte.

Saludos
Leo.