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

ejercicio SQL porfa ! no entiendo como realizarlo

Estas en el tema de ejercicio SQL porfa ! no entiendo como realizarlo en el foro de Bases de Datos General en Foros del Web. Me dieron un trabajo, y estoy pegado en una pregunta. 7._ Obtenga el total de personas por tramos de edad de la tabla personal de ...
  #1 (permalink)  
Antiguo 28/11/2011, 13:26
 
Fecha de Ingreso: noviembre-2011
Ubicación: Stgo,Chile
Mensajes: 1
Antigüedad: 12 años, 5 meses
Puntos: 0
ejercicio SQL porfa ! no entiendo como realizarlo

Me dieron un trabajo, y estoy pegado en una pregunta.


7._ Obtenga el total de personas por tramos de edad de la tabla personal de acuerdo a la siguiente tabla
tramo 1 : 18 - 30
tramo 2 : 31 - 40
tramo 3 : 41 - 50
tramo 4 : sobre 51
ordenadas por tramo. Formato de salida : tramo, Total


La BD para conseguir los datos tiene las tablas :

rut
nombre
ap_paterno
ap_materno
estado_civil
fecha_nacimiento
fecha_ingreso
sueldo
departamento

entiendo que debo calcular la edad con algo así:
select (2011 - datepart(year,fecha_nac)) AS edad


pero como creo las columnas para los tramos y luego comparo edad con un between, según el tramo?, ya que al hacerlo me tiraba error.

Ayuda plz!
  #2 (permalink)  
Antiguo 28/11/2011, 13:50
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: ejercicio SQL porfa ! no entiendo como realizarlo

select
case when edad >=18 and edad <=30 then count(1) end as tramo1,
case when edad >=31 and edad <=40 then count(1) end as tramo2
...
from
(
select (2011 - datepart(year,fecha_nac)) AS edad
) t1


Saludos!
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 10/02/2012, 02:44
 
Fecha de Ingreso: febrero-2012
Mensajes: 1
Antigüedad: 12 años, 2 meses
Puntos: 0
Respuesta: ejercicio SQL porfa ! no entiendo como realizarlo

Otra solución:

select COUNT(*) as '0 - 10',
(select COUNT(*) FROM tabla where Anys between 11 and 20) as '11 - 20',
(select COUNT(*) FROM tabla where Anys between 21 and 30) as '21 - 30',
(select COUNT(*) FROM tabla where Anys between 31 and 40) as '31 - 40',
(select COUNT(*) FROM tabla where Anys between 41 and 50) as '41 - 50',
(select COUNT(*) FROM tabla where Anys between 51 and 60) as '51 - 60',
(select COUNT(*) FROM tabla where Anys between 61 and 70) as '61 - 70',
(select COUNT(*) FROM tabla where Anys between 71 and 80) as '71 - 80',
(select COUNT(*) FROM tabla where Anys between 81 and 90) as '81 - 90',
(select COUNT(*) FROM tabla where Anys > 90) as 'Altres',
(select COUNT(*) FROM tabla) as 'Total'
FROM tabla
where Anys between 0 and 10
  #4 (permalink)  
Antiguo 10/02/2012, 08:48
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: ejercicio SQL porfa ! no entiendo como realizarlo

Cita:
Iniciado por antoninerin Ver Mensaje
Otra solución:

select COUNT(*) as '0 - 10',
(select COUNT(*) FROM tabla where Anys between 11 and 20) as '11 - 20',
(select COUNT(*) FROM tabla where Anys between 21 and 30) as '21 - 30',
(select COUNT(*) FROM tabla where Anys between 31 and 40) as '31 - 40',
(select COUNT(*) FROM tabla where Anys between 41 and 50) as '41 - 50',
(select COUNT(*) FROM tabla where Anys between 51 and 60) as '51 - 60',
(select COUNT(*) FROM tabla where Anys between 61 and 70) as '61 - 70',
(select COUNT(*) FROM tabla where Anys between 71 and 80) as '71 - 80',
(select COUNT(*) FROM tabla where Anys between 81 and 90) as '81 - 90',
(select COUNT(*) FROM tabla where Anys > 90) as 'Altres',
(select COUNT(*) FROM tabla) as 'Total'
FROM tabla
where Anys between 0 and 10
Buena respuesta amigo pero estas usando un subquery muchas veces que puedes evitar con un case(que para eso existe).

Saludos!
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
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 22:18.