Ver Mensaje Individual
  #2 (permalink)  
Antiguo 24/05/2011, 14:48
leonardo_josue
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 16 años
Puntos: 447
Respuesta: Grupos de edad

Hola rick_korn:

Me hubiera gustado que nos pusieras algo del código que intentaste hacer, para poder ayudarte a finar la sentencia. Tampoco nos das mucha información acerca de cómo está formada tu tabla, qué campos utilizas para hacer las comparaciones ni tampoco nos dices cómo quieres presentar las salida, Con esto resulta muy difícil tratar ayudarte, pero trataré de adivinar qué es lo que necesitas.

Checa este script:

Código MySQL:
Ver original
  1. mysql> create table TablaEdades (id int, descripcion varchar(10), edad int);
  2. Query OK, 0 rows affected (0.19 sec)
  3.  
  4. mysql> insert into TablaEdades values
  5.     -> (1, 'uno', 10), (2, 'dos', 15),(3, 'tres', 21),
  6.     -> (4, 'cuatro', 26), (5, 'cinco', 22), (6, 'seis', 31),
  7.     -> (7, 'siete', 17), (8, 'ocho', 28), (9, 'nueve', 28), (10, 'diez', 39);
  8. Query OK, 10 rows affected (0.05 sec)
  9. Records: 10  Duplicates: 0  Warnings: 0
  10.  
  11. mysql> select * from TablaEdades;
  12. +------+-------------+------+
  13. | id   | descripcion | edad |
  14. +------+-------------+------+
  15. |    1 | uno         |   10 |
  16. |    2 | dos         |   15 |
  17. |    3 | tres        |   21 |
  18. |    4 | cuatro      |   26 |
  19. |    5 | cinco       |   22 |
  20. |    6 | seis        |   31 |
  21. |    7 | siete       |   17 |
  22. |    8 | ocho        |   28 |
  23. |    9 | nueve       |   28 |
  24. |   10 | diez        |   39 |
  25. +------+-------------+------+
  26. 10 rows in set (0.02 sec)
  27.  
  28. mysql> #Para presentar la información en forma de columnas
  29. mysql> select
  30.     -> sum(if(edad between 10 and 19, 1, 0)) 10_19,
  31.     -> sum(if(edad between 20 and 29, 1, 0)) 20_29,
  32.     -> sum(if(edad between 30 and 39, 1, 0)) 39_39,
  33.     -> count(*) total
  34.     -> from TablaEdades;
  35. +-------+-------+-------+-------+
  36. | 10_19 | 20_29 | 39_39 | total |
  37. +-------+-------+-------+-------+
  38. |     3 |     5 |     2 |    10 |
  39. +-------+-------+-------+-------+
  40. 1 row in set (0.00 sec)
  41.  
  42. mysql> #Para presentar la información en forma de renglones
  43. mysql> select rango, count(*) from
  44.     -> (
  45.     -> select
  46.     -> case when edad between 0 and 9 then "20_9"
  47.     -> when edad between 10 and 19 then "10_19"
  48.     -> when edad between 20 and 29 then "20_29"
  49.     -> when edad between 30 and 39 then "30_39"
  50.     -> when edad > 39 then "mas_9" end rango
  51.     -> from TablaEdades
  52.     -> ) T
  53.     -> group by rango
  54.     -> union
  55.     -> select "total", count(*) from TablaEdades;
  56. +-------+----------+
  57. | rango | count(*) |
  58. +-------+----------+
  59. | 10_19 |        3 |
  60. | 20_29 |        5 |
  61. | 30_39 |        2 |
  62. | total |       10 |
  63. +-------+----------+
  64. 4 rows in set (0.00 sec)

Si esto no te sirve entonces atiende a lo que te comento al principio y danos un poco más de información, y en lo subsecuente, cuando publiques alguna otra pregunta recuerda también este punto. Entre más información nos puedas dar más fácil será tratar de ayudarte, no importa que te tardes algún tiempo en redactar tu mensaje. es preferible a poner cuatro lineas de texto y esperar que los demás adivinen el resto. Ojo con eso.

Saludos
Leo.