Descarga la aplicación para disfrutar aún más
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;
Compartir