Logo Studenta

Ayudantía 5 - Programación

¡Estudia con miles de materiales!

Vista previa del material en texto

Universidad de los Andes 
 Facultad de Ciencias Económicas y Empresariales 
 Ingeniería Comercial 
 Programación y Manejo de la Información 2021-1 
 
 
 
 Ayudantía 5 SQL 
 Prueba 1 
Profesores: Andrés Kipreos – Agustín Lagos – Stefan Elbl 
Ayudante: Juan Manuel Mira 
 
En esta ayudantía hay 6 ejercicios los cuales les pueden servir como práctica para la prueba, 
si alguno la quiere resolver por si solo para estudiar, la pauta está al final de este pdf con las 
consultas y las tablas resultantes. Para resolverlos se necesitan distintas partes de la materia 
como consultas anidadas, agregaciones, joins y demás, trabajaremos con la base de datos 
imdb durante toda la ayudantía. 
 
 
Pregunta 1 
Obtenga las tuplas de la tabla Usuario cuyo mail sea Gmail. 
 
Pregunta 2 
 
Usando las tablas Películas y fecha de estreno, obtenga el nombre, la fecha y ciudad 
de estreno de la primera película que fue estrenada. 
 
Pregunta 3 
 
a) Usando las tablas Películas y Rating, obtenga el número de películas que no 
tuvieron ningún rating. 
 
b) Al revés de la pregunta anterior, haga una consulta que entregue el número de 
películas que si tienen rating. 
 
Pregunta 4 
Con las tablas Películas y Rating, obtenga el ID, título, rating total (suma de los 
puntos que le dieron) y duración, de las películas que duren menos que la película 
parasite. 
 
Pregunta 5 
Obtenga el nombre, mail, rating promedio que puso y la ciudad de los usuarios que 
le pusieron rating a una o más películas. Puede usar las tablas perfil, rating, usuario 
y ciudad. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Respuestas 
 
Pregunta 1 
SELECT * 
FROM Usuario 
WHERE mail LIKE '%gmail%'; 
 
 
 
 
 
Pregunta 2 
SELECT p.Titulopelicula AS más_antigua, f.fecha, f.país 
FROM Peliculas p 
JOIN ( 
SELECT MIN(fecha) AS fecha, IDPelicula, país 
FROM fechadeestreno) f 
ON p.IDPelicula=f.IDPelicula; 
 
 
 
 
Pregunta 3.a 
SELECT COUNT(p.IDPelicula) AS Sin_rating 
FROM Peliculas p 
LEFT JOIN Rating r 
ON p.IDPelicula=r.IDPelicula 
WHERE r.Rating IS NULL; 
 
 
 
 
 
Pregunta 3.b 
Usando operador IN y una subquery 
SELECT COUNT(p.IDPelicula) AS Con_rating 
FROM Peliculas p 
WHERE IDPelicula IN ( 
SELECT p.IDPelicula 
FROM Peliculas p 
LEFT JOIN Rating r 
ON p.IDPelicula=r.IDPelicula 
WHERE r.Rating IS NOT NULL); 
 
 
 
 
 
 
También se puede hacer parecido a la pregunta 3 
SELECT COUNT(DISTINCT p.IDPelicula) AS Con_rating 
FROM Peliculas p 
LEFT JOIN Rating r 
ON p.IDPelicula=r.IDPelicula 
WHERE r.Rating IS NOT NULL; 
 
 
 
Pregunta 4 
SELECT p.IDPelicula, p.Titulopelicula, SUM(r.rating) AS Rating, p.Duracion 
FROM Peliculas p 
JOIN Rating r 
ON p.IDPelicula=r.IDPelicula 
WHERE Duracion< ( 
SELECT Duracion 
FROM Peliculas 
WHERE Titulopelicula= 'Parasite') 
GROUP BY p.IDPelicula; 
 
 
 
Pregunta 5 
SELECT p.Nombre,p.mail, AVG(r.Rating) AS rating_promedio, c.Nombreciudad 
FROM Perfil p 
JOIN Rating r 
ON r.mail=p.mail 
JOIN Usuario u 
ON u.mail=p.mail 
JOIN Ciudad c 
ON u.IDCiudad=c.IDCiudad 
GROUP BY p.nombre;

Otros materiales