Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Subconsulta con case y ALias

Estas en el tema de Subconsulta con case y ALias en el foro de Mysql en Foros del Web. Buenos dias, tengo la siguiente consulta donde de acuerdo a uno rangos de consumo me cuenta los registro que hay. select count(case when Cantidad between ...
  #1 (permalink)  
Antiguo 28/12/2009, 09:26
Avatar de sebas_20_jv  
Fecha de Ingreso: agosto-2009
Ubicación: Medellin, Colombia
Mensajes: 59
Antigüedad: 14 años, 8 meses
Puntos: 3
De acuerdo Subconsulta con case y ALias

Buenos dias, tengo la siguiente consulta donde de acuerdo a uno rangos de consumo me cuenta los registro que hay.

select count(case when Cantidad between 0 and 5 then 1
end) as 'consumos entre 0 a 5',
count(case when Cantidad between 6 and 10 then 2
end) as 'consumos entre 6 y 10 ',
count(case when Cantidad between 11 and 15 then 3
end) as 'consumos entre 11 y 15',
count(case when Cantidad between 16 and 20 then 4
end) as 'consumos entre 16 y 20',
count(case when Cantidad > 21 then 5
end) as 'consumos entre mayores a 21'
from consumo;

esta perfecta, pero ahora necesito hace lo mismo con una tabla llamada pacientes, donde primero calculo la edad y despues necesito hacer una consulta igual a la de arriba..
tengo esto pero no tengo idea como usar el alias...


SELECT truncate((datediff(now(),paciente.Fecha_Nacimiento )/360),0) as 'edad_paciente'
from galenvs.paciente
(
select count(case when edad_paciente between 0 and 5 then 1
end) as 'pacientes entre 0 a 5',
count(case when edad_paciente between 6 and 10 then 2
end) as 'pacientes entre 6 y 10 ',
count(case when edad_paciente between 11 and 15 then 3
end) as 'pacientes entre 11 y 15',
count(case when edad_paciente between 16 and 20 then 4
end) as 'pacientes entre 16 y 20',
count(case when edad_paciente > 21 then 5
end) as 'pacientes entre mayores a 21'
from galenvs.paciente);

Agradezco su colaboracion...
  #2 (permalink)  
Antiguo 28/12/2009, 11:14
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: Subconsulta con case y ALias

Esta es una posible solución (he usado IF en lugar de when case):
SELECT SUM(IF(timestampdiff(year,Fecha_nacimiento,curdate ()) between 0 and 5,1,0)) 'pacientes entre 0 y 5', SUM(IF(timestampdiff(year,Fecha_nacimiento,curdate ()) between 6 and 10,1,0)) 'pacientes entre 6 y 10', SUM(IF(timestampdiff(year,Fecha_nacimiento,curdate ()) between 11 and 15,1,0)) 'pacientes entre 11 y 15', SUM(IF(timestampdiff(year,Fecha_nacimiento,curdate ()) between 16 and 20,1,0)) 'pacientes entre 16 y 20', SUM(IF(timestampdiff(year,Fecha_nacimiento,curdate ()) > 20,1,0)) 'pacientes mayores de 20' from galenvs.paciente
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:12.