Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Instituto
Instituto
12 de Diciembre de 2012
El Instituto Informático de Pro (IIP) registra la información académica de sus alumnos mediante una base de
datos con la siguiente estructura:
1.- Sacar un listado con los nombres de los alumnos y los nombres de las asignaturas en las que se ha
matriculado ordenado alfabéticamente por nombre del alumno y después por nombre de asignatura
SELECT alumnos.nombre,asignaturas.denominacion
FROM alumnos,matriculas,asignaturas
WHERE alumnos.cod_alu=matriculas.cod_alu
AND asignaturas.cod_asig=matriculas.cod_asig
ORDER BY 1,2;
2.- Nos hemos equivocado en el dato de la fecha de nacimiento de la alumna con apellido ‘Fontaneda’, ya
que nació el 1 de enero de 1992. Arreglar ese error poniendo la fecha correcta
UPDATE alumnos
SET fecha_nacimiento='01-01-1992'
WHERE alumnos.nombre LIKE '%Fontaneda%'
3.- Mostrar los nombres de los alumnos que nacieron el mismo día
SELECT a.nombre,b.nombre
FROM alumnos a,alumnos b
WHERE a.fecha_nacimiento=b.fecha_nacimiento
AND a.cod_alu<b.cod_alu
4.- Listado de alumnos con el número de asignaturas en las que se han matriculado
SELECT alumnos.nombre,count(*)
FROM alumnos,matriculas
WHERE alumnos.cod_alu=matriculas.cod_alu
GROUP BY alumnos.nombre
ORDER BY 2 DESC;
7.- Realizar un listado en el que salgan TODAS las asignaturas y el número de alumnos matriculados en
cada una de ellas, ordenada de mayor a menor número de matriculas
SELECT denominacion,count(matriculas.cod_asig)
FROM asignaturas LEFT JOIN matriculas
ON asignaturas.cod_asig=matriculas.cod_asig
GROUP BY denominacion
ORDER BY 2 DESC;
9.- Dinero que debe pagar cada estudiante por los exámenes que ha realizado pero sólo deben salir en el
listado los alumnos que hayan hecho más de 5 exámenes
SELECT alumnos.nombre,sum(precio_examen),count(*)
FROM alumnos,matriculas,examenes,asignaturas
WHERE alumnos.cod_alu=matriculas.cod_alu
AND matriculas.cod_matr=examenes.cod_matr
AND asignaturas.cod_asig=matriculas.cod_asig
GROUP BY alumnos.nombre
HAVING count(*)>5
10.- Nombre del alumno que ha sacado la nota más alta en un examen
SELECT alumnos.nombre
FROM alumnos,matriculas,examenes
WHERE alumnos.cod_alu=matriculas.cod_alu
AND matriculas.cod_matr=examenes.cod_matr
AND nota=(SELECT max(nota)
FROM examenes);
13.- La misma consulta que la pregunta 11 pero considerando SÓLO a aquellos alumnos que han
realizado 3 exámenes por asignatura
SELECT alumnos.nombre,asignaturas.denominacion,avg(nota)
FROM alumnos,matriculas,examenes,asignaturas
WHERE alumnos.cod_alu=matriculas.cod_alu
AND matriculas.cod_matr=examenes.cod_matr
AND asignaturas.cod_asig=matriculas.cod_asig
GROUP BY alumnos.nombre,asignaturas.denominacion
HAVING count(nota)=3;
14.- Compañeros de clase del apellidado ‘Fuertes’ (es decir, que cursan alguna asignatura con él)
SELECT DISTINCT alumnos.nombre
FROM alumnos,matriculas
WHERE matriculas.cod_alu=alumnos.cod_alu
AND matriculas.cod_asig IN(SELECT cod_asig
FROM matriculas
WHERE cod_alu=(SELECT cod_alu
FROM alumnos
WHERE nombre LIKE '%Fuertes%'))
AND alumnos.nombre NOT LIKE '%Fuertes%'
15.- Actualizar los precios de las asignaturas: las matrículas suben un 10% y los exámenes 2 euros
UPDATE asignaturas
SET precio_matricula=precio_matricula*1.1,precio_examen=precio_examen+2
20.- Borrar los exámenes de aquellas asignaturas cuyos alumnos no se han presentado a la tercera
evaluación
delete from examenes
where cod_matr not in (select cod_matr
from examenes
where evaluacion=3)