Sunteți pe pagina 1din 2

-- 14.

relaci�n de alumnos que hayan aprobado todas sus asignaturas en alg�n


Semestre.

-- determinamos el n�mero de cursos que el alumno llev� cada semestre


select semestre, cod_alumno, nrocursossemestre = count(cod_asignatura)
into #cursossem
from matricula
group by semestre, cod_alumno

-- determinamos el n�mero de cursos que el alumno aprob� cada semestre


select semestre, cod_alumno, nrocursosaprobados = count(cod_asignatura)
into #cursosaprobadossem
from matricula
where (case when nota = 'nsp' then '0' else nota end) > 10
group by semestre, cod_alumno

-- determinamos los alumnos que por lo menos una vez el n�mero de cursos del
semestre
-- sea igual al numero de cursos aprobados en el semestre
select distinct t1.cod_alumno, nrosemaprobados = count(t2.semestre),
nrosemmatriculados = count(t1.semestre)
into #tmp_final
from #cursossem t1 left outer join #cursosaprobadossem t2
on (t1.semestre = t2.semestre) and (t1.cod_alumno = t2.cod_alumno)
and (t1.nrocursossemestre = t2.nrocursosaprobados)
group by t1.cod_alumno
having count(t2.semestre)>=1

-- agregamos los datos del alumno


select a.cod_alumno, a.apellido_paterno, a.apellido_materno, a.nombres,
a.cod_carrera,
nrosemaprobados, nrosemmatriculados
from #tmp_final t1, alumno a
where t1.cod_alumno = a.cod_alumno

-- 15. seg�n reglamento universitario, toda asignatura en la cual se tenga m�s


del
-- 70% de reprobados, debe reconsiderarse y volver a tomar examen a los
alumnos.
-- por lo tanto se desea saber que asignaturas necesitan ser reconsideradas
en
-- el �ltimo semestre.

-- determinamos el �ltimo semestre


declare @ultimosemestre varchar(7)

select @ultimosemestre = max(semestre)


from matricula

-- seleccionamos las asignaturas del �ltimo semestre, los alumnos matriculados


-- y los que reprobaron

select cod_asignatura, nromatriculados = count(cod_alumno) ,


nroreprobados = sum( case when nota <7 then 1 else 0 end)
into #reprobados
from matricula
where semestre = @ultimosemestre
group by cod_asignatura

-- seleccionamos las asignaturas con m�s del 70% de alumnos reprobados


select a.*, porcentajereprobados = round(nroreprobados/nromatriculados*100 , 2)
from #reprobados r, asignatura a
where r.cod_asignatura = a.cod_asignatura
and (nroreprobados/nromatriculados)*100 > 70

-- 16. seg�n el reglamento universitario un alumno que haya reprobado o


desaprobado
-- m�s de tres veces una asignatura ser� invitado a reconsiderar los estudios

-- en la carrera universitaria. se desea tener la lista de alumnos que ser�n


-- invitados a reconsiderar sus estudios universitarios.

-- seleccionamos los alumnos y las veces que hayan desaprobado cada asignatura
select cod_alumno, cod_asignatura, vecesdesaprobado = count(nota)
into #cursosdesaprobados
from matricula
where (case when nota <> 'nsp' then cast(nota as int) else 0 end) <10
group by cod_alumno, cod_asignatura

-- seleccionamos los alumnos que hayan desaprobado algun curso m�s de tres veces
-- y agregamos los datos de la asignatura
select cd.cod_alumno, a.*, vecesdesaprobado
into #areconsiderar
from #cursosdesaprobados cd, asignatura a
where cd.cod_asignatura = a.cod_asignatura
and vecesdesaprobado > 3

-- agregamos los datos de alumnos


select al.*, cod_asignatura,denominacion,categoria,creditos, vecesdesaprobado
from #areconsiderar t1, alumno al
where t1.cod_alumno = al.cod_alumno

S-ar putea să vă placă și