SQL - Rango de edades

 
Vista:

Rango de edades

Publicado por Cristian Naranjo (2 intervenciones) el 09/09/2009 20:00:30
RANGO DE FECHAS:
Estoy realizando este query en Mysql 5.0 y necesito saber cuantos pacientes han consultado que tengan la edad de los siguientes rangos(1 a 4) , de (5-15), (16-30), (31-40) y mas de 50 años

Esta es la consulta que tengo para el rango ( 1 a 4 años). Como hago para agregar los otros rango a esta misma consulta????

SELECT count(distinct tb_consulta.edad)as Edad1_4
From tb_paciente, tb_consulta
where tb_paciente.id_paciente=tb_consulta.id_paciente and edad between 1 and 4 order by edad
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Rango de edades

Publicado por Dani (10 intervenciones) el 10/09/2009 11:55:46
En oracle sería algo así como: (no se debe ir mucho en mysql supong)

select
sum(case
when edad between 1 and 4 then 1
else 0
end) Edad1a4,
sum(case
when edad between 5 and 15 then 1
else 0
end) Edad5a15,
.....
from ...........
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Rango de edades

Publicado por Cristian Naranjo (1 intervención) el 14/09/2009 02:06:44
Muchas gracias ...............así me funciona; pero por cada rango de edad me inserta una columna, como puedo hacer para que me muestre el rango de edades pero en filas???? y con esta forma en que sabes hacerlo como puedo saber de este rango de edad cuantos hombres y cuantas mujeres se atendieron???

RANGO_EDAD MASCULINO FEMENINO
1-4 3 5
5-15 4 6
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Rango de edades

Publicado por Dani (10 intervenciones) el 14/09/2009 13:40:06
Para que te salga por columnas masculino y femenino sería hacer lo mismo en el case pero discriminando por masculino y femenino

select
sum(case
when (edad between 1 and 4) and Genero like 'Masculino' then 1
else 0
end) Edad1a4Masc,
sum(case
when (edad between 1 and 4) and Genero like 'Femenino' then 1
else 0
end) Edad1a4Fem,
sum(case
when (edad between 5 and 15) and Genero like 'Masculino' then 1
else 0
end) Edad5a15Masc,
.....
from ...........

Si lo que quieres es que te lo ponga en filas, sería algo así como:

select Genero,'Entre1y4' as RangoEdad, count(*) as NumeroPacientes from tabla where edad between 1 and 4
union all
select Genero,'Entre5y15' as RangoEdad, count(*) as NumeroPacientes from tabla where edad between 5 and 15
.....

Espero que te sirva.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Rango de edades

Publicado por Cristian Naranjo (2 intervenciones) el 15/09/2009 15:01:35
Muchisimas gracias, lo tuve que dejar en columnas porque las vistas que estoy haciendo en mysql Browser me sale error cuando utilizo Union All y luego los select.
De nuevo te doy muchas gracias por tu ayuda.....
Feliz dia......
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Rango de edades

Publicado por Leopoldo Taylhardat (93 intervenciones) el 03/10/2009 04:59:51
Saludos...
Yo crearía una funcion para calcular el rango de las edades (me devolvería el valor en una cadena ej...'1-4',5-10'...etc.)
y tomaría la columna de sexo y la función del rango para el select y agruparía por sexo y rango...

Creo que pudiera ser la solución...

select sexo, f_rango(edad) as rango, count(f_rango(edad)) group by sexo, f_rango(edad) order by 2 asc, 1 asc;
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Rango de edades

Publicado por Cristian Naranjo (1 intervención) el 04/10/2009 23:50:30
Gracias

y como crearía la función para que me devuelva una cadena????
ya que este query lo debo implementar en un reporte en crystal report 8.0
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar