Instituto
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)