-- 14. Semestre.
relaci�n de alumnos que hayan aprobado todas sus asignaturas en alg�n
-- 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