0% encontró este documento útil (0 votos)
46 vistas2 páginas

ModeloD (Solucion)

Este documento presenta las instrucciones para un examen práctico de SQL sobre bases de datos de Fórmula 1. Contiene 4 consultas que deben resolverse utilizando JOIN, GROUP BY, HAVING y COUNT. También incluye la definición de un procedimiento almacenado que devuelve el nombre del piloto con más puntos y su puntuación total para un equipo y año dados.

Cargado por

Mike Wachowsky
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
46 vistas2 páginas

ModeloD (Solucion)

Este documento presenta las instrucciones para un examen práctico de SQL sobre bases de datos de Fórmula 1. Contiene 4 consultas que deben resolverse utilizando JOIN, GROUP BY, HAVING y COUNT. También incluye la definición de un procedimiento almacenado que devuelve el nombre del piloto con más puntos y su puntuación total para un equipo y año dados.

Cargado por

Mike Wachowsky
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Bases de Datos

Práctica 2 (Curso 2020-2021)

Normativa
1. Dispone de 1 hora para la realización del examen.
2. Cualquier indicio de copia resultará en un 0 en el examen y la perdida de la evaluación
continua.
3. Se puede utilizar el ordenador del aula o un portátil para resolver las consultas que
aparecen en el enunciado.

MODELO D: Examen práctica 2 - SQL


1. Obtener el nombre del circuito en el que se han disputado mayor número de grandes
premios y también el número total de grandes premios disputados (COUNT(year)).

-------- SOLUCIÓN PROPUESTA ----------


useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC

2. Obtener el nombre del piloto que más puntos ha conseguido en un mundial en toda la
historia. Mostrar también el total de puntos que consiguió y el año en que los obtuvo.

-------- SOLUCIÓN PROPUESTA ----------


SELECT [Link], [Link], maximo.`year`
FROM (SELECT [Link], races.`year`, SUM(points) Total
FROM results JOIN drivers ON [Link] = [Link]
JOIN races ON [Link] = [Link]
GROUP BY races.`year`, [Link]
HAVING SUM(points) >= ALL ( SELECT SUM(points)
FROM results JOIN drivers ON [Link] = [Link]
JOIN races ON [Link] = [Link]
GROUP BY races.`year`, [Link])
) maximo JOIN drivers ON [Link] = [Link];

3. Obtener el nombre de los pilotos que durante el año 2017 consiguieron puntos en todas
las carreras.

----------- DIVISIÓN HAVING COUNT()---------


SELECT [Link], [Link]
FROM drivers
WHERE driverId IN (SELECT [Link]
FROM results
WHERE [Link] > 0
AND raceId IN (SELECT COUNT(*)
FROM races
WHERE year = 2017)
GROUP BY [Link]
HAVING COUNT(*) = (SELECT COUNT(*)
FROM races
WHERE year = 2017));

4. Definir un procedimiento almacenado de nombre GetsWinnerAndPoints, que tomando


como parámetro de entrada un año concreto y el nombre de un equipo de constructores,
devuelva como parámetros de salida el nombre del piloto que más puntos obtuvo en el
equipo y el total de puntos que obtuvo.

-------- SOLUCIÓN PROPUESTA ----------


DROP PROCEDURE carreras_y_puntos;
DELIMITER $$
CREATE PROCEDURE GetsRacesAndPoints (IN temporada INTEGER, nombre VARCHAR(200)
OUT nombre VARCHAR(100), puntos INTEGER)

Práctica 2: Structured Query Language 1


Bases de Datos
Práctica 2 (Curso 2020-2021)

BEGIN
SELECT [Link], SUM([Link]) INTO nombre, puntos
FROM constructors
INNER JOIN results ON [Link] = [Link]
INNER JOIN races ON [Link]=[Link]
INNER JOIN drivers ON [Link]=[Link]

WHERE [Link]=temporada AND [Link]= nombre


GROUP BY [Link], [Link];
END$$
DELIMITER ;

CALL GetsRacesAndPoints (2010 , 'Ferrari');

Esta obra está bajo una licencia Creative Commons


“Reconocimiento-NoCommercial-CompartirIgual 4.0 Inter-
nacional”.

Práctica 2: Structured Query Language 2

También podría gustarte