Ver Mensaje Individual
  #4 (permalink)  
Antiguo 05/11/2012, 16:13
leonardo_josue
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Respuesta: Dividir edades comprendidas

Hola dvbeaumont:

Almacenar la edad es un terrible error de diseño... lo que debes hacer, como lo menciona djaevi, sería almacenar la fecha de nacimiento y a partir de ella calcular la EDAD... de lo contrario todas las consultas que hagas estarían supeditadas a que tengas la información actualizada, pero bueno, al margen de esto vayamos con el problema... hay dos formas en que pudieras contabilizar los registros y presentar la información... una sería en forma de columnas y otra en forma de renglones:

Código MySQL:
Ver original
  1. mysql> SELECT * FROM edades;
  2. +------+------+
  3. | id   | edad |
  4. +------+------+
  5. |    1 |   18 |
  6. |    2 |   22 |
  7. |    3 |   24 |
  8. |    4 |   22 |
  9. |    5 |   50 |
  10. |    6 |   62 |
  11. +------+------+
  12. 6 rows in set (0.04 sec)
  13.  
  14. mysql> SELECT
  15.     ->   SUM(IF(edad < 20, 1, 0)) Menos_de_20,
  16.     ->   SUM(IF(edad BETWEEN 20 AND 30, 1, 0)) Entre_20_y_30,
  17.     ->   SUM(IF(edad > 30, 1, 0)) Mas_de_30
  18.     -> FROM edades;
  19. +-------------+---------------+-----------+
  20. | Menos_de_20 | Entre_20_y_30 | Mas_de_30 |
  21. +-------------+---------------+-----------+
  22. |           1 |             3 |         2 |
  23. +-------------+---------------+-----------+
  24. 1 row in set (0.00 sec)
  25.  
  26. mysql> SELECT edad, COUNT(edad) FROM
  27.     -> ( SELECT
  28.     ->    CASE WHEN EDAD < 20 THEN "menos de 18" ELSE
  29.     ->      CASE WHEN EDAD BETWEEN 20 AND 30 THEN "entre 20 y 30"  ELSE
  30.     ->        CASE WHEN EDAD > 30 THEN "mas de 30"
  31.     ->        END
  32.     ->      END
  33.     ->    END edad
  34.     ->  FROM edades ) T
  35.     -> GROUP BY edad;
  36. +---------------+-------------+
  37. | edad          | COUNT(edad) |
  38. +---------------+-------------+
  39. | entre 20 y 30 |           3 |
  40. | mas de 30     |           2 |
  41. | menos de 18   |           1 |
  42. +---------------+-------------+
  43. 3 rows in set (0.00 sec)

Dale un vistazo para ver si te sirve

Saludos
Leo.