Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Consultas Vuelta Ciclista (Soluciones)
Consultas Vuelta Ciclista (Soluciones)
Ejercicios SQL
Vuelta Ciclista
Equipo(nomequipo, director)
Ciclista(dorsal, nombre, edad, nomequipo)
Etapa(numetapa, kms, salida, llegada, dorsal)
Puerto(nompuerto, altura, categora, pendiente, numetapa, dorsal)
Maillot(cdigo, tipo, color, premio)
Lleva(cdigo, numetapa, dorsal)
La clave primaria de cada relacin est formada por los atributos que aparecen subrayados. La informacin que
contienen las relaciones anteriores se describe a continuacin:
Equipo contiene los datos de los distintos equipos: nombre (nomequipo) y nombre de su director
(director).
Ciclista contiene los datos de los ciclistas que componen los distintos equipos: nmero del dorsal
(dorsal), nombre del ciclista (nombre), edad del ciclista (edad) y nombre del equipo al que pertenece
(nomequipo).
Etapa contiene los datos de las etapas que componen la vuelta ciclista: nmero de la etapa (numetapa) (las
etapas se numeran consecutivamente: 1, 2, ...), kilmetros que tiene la etapa (kms), nombre de la poblacin
de donde sale la etapa (salida), nombre de la poblacin donde est la meta de la etapa (llegada) y
nmero del dorsal del ciclista que ha ganado la etapa (dorsal). Los atributos salida y llegada estn
definidos sobre el mismo dominio.
Puerto contiene los datos de los puertos de montaa que visita la vuelta ciclista: nombre del puerto
(nompuerto), altura mxima del puerto (altura), categora del puerto: primera, especial, etc. (categora),
porcentaje que indica la pendiente media del puerto (pendiente), nmero de la etapa donde se sube el
puerto (numetapa) y nmero del dorsal que ha ganado el puerto al pasar en primera posicin (dorsal).
Maillot contiene los datos de los premios que se otorgan mediante los distintos maillots: cdigo del maillot
(cdigo), clasificacin que premia ese maillot: general, montaa, etc. (tipo), color de la camiseta asociada
(color) e importe del premio que corresponde al ciclista que termine la vuelta llevando el maillot (premio).
Lleva contiene la informacin sobre qu ciclistas (dorsal) han llevado cada maillot (cdigo) en cada una
de las etapas (numetapa).
Consultas y resultados
1.
Obtener el nombre y el equipo de los ciclistas menores de 30 aos que hayan ganado alguna etapa.
nombre
2.
nomequipo
Bo Hamburger
TVM
Erik Dekker
Wordperfect
Laurent Jalabert
ONCE
Mario Cipollini
Mercatone Uno
Pascal Lino
Amore Vita
Vladislav Bobrik
Gewiss
Obtener el nombre y el equipo de los ciclistas mayores de 32 aos que hayan ganado algn puerto.
nombre
3.
nomequipo
Massimo Podenzana
Navigare
Pedro Delgado
Banesto
Obtener los datos de las etapas que pasan por algn puerto de montaa y que tienen salida y llegada en la misma
poblacin.
numetapa kms
18
4.
195
salida
llegada
dorsal
vila
vila
Obtener las poblaciones que tienen la meta de alguna etapa, pero desde las que no se realiza ninguna salida.
llegada
Alicante
Alto de la Cruz de la Demanda
Alto del Naranco
Caceres
Estacin de Cerler
Lagos de Covadonga
Madrid
Sierra Nevada
Valencia
5.
Obtener el nombre y el equipo de los ciclistas que han ganado alguna etapa llevando el maillot amarillo, mostrando
tambin el nmero de etapa.
nombre
nomequipo
Miguel Indurin
6.
numetapa
Banesto
Obtener las poblaciones de salida y de llegada de las etapas donde se encuentran puertos con altura superior a
1300 metros.
salida
7.
llegada
Andorra
Estacin de Cerler
vila
vila
vila
Destilerias Dyc
Igualada
ANDorra
Valladolid
Salamanca
Obtener el nmero de las etapas que tienen algn puerto de montaa, indicando cuntos tiene cada una de ellas.
numetapa
8.
numero_puertos
2
10
11
15
16
18
19
Obtener el nombre y la edad de los ciclistas que han llevado dos o ms maillots en una misma etapa.
dorsal
9.
nombre
edad
1 Miguel Indurin
32
26 Mikel Zarrabeitia
27
30 Melchor Mauri
28
Obtener el nombre y el equipo de los ciclistas que han llevado algn maillot o que han ganado algn puerto.
Eddy Seigneur
Castorama
Amore Vita
Gianni Bugno
Gatorade
Massimo
Podenzana
Melchor Mauri
Navigare
Alessio Di Basco
nombre
nomequipo
Alex Zulle
ONCE
Giorgio Furlan
Gewiss
Miguel Indurin
Banesto
Alfonso Gutirrez
Artiach
Lotus Festina
Mikel Zarrabeitia
Banesto
ArmAND de las
Cuevas
Bruno Leali
Castorama
Jesus Montoya
Banesto
Pedro Delgado
Banesto
Bresciali-Refin
Laurent Jalabert
ONCE
Per Pedersen
Seguros Amaya
Claudio
Chiappucci
Davide Cassani
Carrera
Marco Saligari
Gewiss
Mapei-Clas
TVM
Mario Cipollini
Mercatone Uno
Stefano della
Santa
Tony Rominger
Dimitri Konishev
Jolly Club
Massimiliano Lelli
Mercatone Uno
Total : 25 filas
Banesto
Mapei-Clas
10. Obtener los nmeros de las etapas que no tienen puertos de montaa.
numetapa
13
14
17
20
12
21
Total : 14 filas
11. Obtener la edad media de los ciclistas que han ganado alguna etapa.
media_edad_ganadores
30,952380952381
12. Obtener el nombre de los puertos de montaa que tienen una altura superior a la altura media de todos los puertos.
nompuerto
Arcalis
Cerler-Circo de Ampriu
Coll de Ordino
Cruz de la Demanda
Navacerrada
Puerto de la Morcuera
Sierra Nevada
13. Obtener las poblaciones de salida y de llegada de las etapas donde se encuentran los puertos con mayor pendiente.
salida
llegada
Igualada
Andorra
14. Obtener el dorsal y el nombre de los ciclistas que han ganado los puertos de mayor altura.
dorsal
nombre
9 Massimo Podenzana
26 Mikel Zarrabeitia
15. Obtener los datos de las etapas cuyos puertos (todos) superan los 1300 metros de altura.
numetapa
kms
salida
llegada
dorsal
180 Valladolid
Salamanca
36
11
195 ANDorra
Estacin de Cerler
65
19
190 vila
Destilerias Dyc
16. Obtener la edad del ciclista ms joven, la del ms veterano y la edad media de los ciclistas que han participado en
la vuelta.
menor_edad
mayor_edad
23
media_edad
37
29,89
17. Obtener el nombre del equipo y el director del ciclista que gan la etapa ms larga.
director
Moreno Argentin
nomequipo
Gewiss
18. Obtener el dorsal y el nombre de los ciclistas que hayan ganado alguna etapa, mostrando el nmero de etapas que
han ganado.
dorsal
27 Laurent Jalabert
1 Miguel Indurin
nombre
etapas_ganadas
2
35 Erik Dekker
2 Pedro Delgado
4 Tony Rominger
52 Vladislav Bobrik
5 Gert-Jan Theunisse
65 Pascal Lino
83 Hernan Buenahora
10 Mario Cipollini
12 Alessio Di Basco
93 Bo Hamburger
22 Giorgio Furlan
Total : 16 filas
19. Obtener el nombre de los ciclistas que pertenecen a un equipo de ms de cinco ciclistas y que han ganado alguna
etapa, indicando tambin cuntas etapas han ganado.
dorsal
22 Giorgio Furlan
1 Miguel Indurin
nombre
num_etapas_ganadas
2
2 Pedro Delgado
52 Vladislav Bobrik
4 Tony Rominger
83 Hernan Buenahora
5 Gert-Jan Theunisse
93 Bo Hamburger
10 Mario Cipollini
Total : 11 filas
20. Nombre y equipo de los ciclistas que han llevado alguna vez el maillot amarillo, indicando durante cuntas etapas lo
han llevado.
nombre
nomequipo
Num_veces
Alex Zulle
ONCE
Melchor Mauri
Banesto
Miguel Indurin
Banesto
10
Mikel Zarrabeitia
Banesto
Pedro Delgado
Banesto
Tony Rominger
Mapei-Clas
21. Por cada equipo, color de los maillots que han llevado sus ciclistas.
Gatorade
blanco y rojo
Amore Vita
nomequipo
rosa
color
Gewiss
rojo
Artiach
rojo
Gewiss
rosa
Artiach
verde
Jolly Club
rojo
Banesto
amarillo
Lotus Festina
rosa
Banesto
blanco y rojo
Mapei-Clas
amarillo
Banesto
rojo
Mapei-Clas
rojo
Banesto
rosa
Mercatone Uno
rosa
Banesto
verde
ONCE
amarillo
Bresciali-Refin
rojo
ONCE
verde
Carrera
blanco y rojo
Seguros Amaya
rosa
Castorama
estrellas moradas
TVM
rojo
Total : 23 filas
22. Nombre y equipo del ganador de la vuelta (es decir, el que ha lucido el maillot amarillo en la ltima etapa).
nombre
nomequipo
Miguel Indurin
Banesto
Seguros Amaya
Amore Vita
nomequipo
Jolly Club
Telecom
Artiach
Kelme
TVM
Bresciali-Refin
Lotus Festina
Wordperfect
Carrera
Mercatone Uno
Castorama
Motorola
Euskadi
Navigare
Gatorade
PDM
Total : 19 filas
24. Nombre y dorsal de los ciclistas mayores de 30 aos que han ganado algn puerto, junto con el nmero de puertos
que han ganado.
dorsal
nombre
edad
numPuertos
1 Miguel Indurin
32
2 Pedro Delgado
35
9 Massimo Podenzana
34
32
25 Gianni Bugno
25. Nombre y director de los equipos que, en alguna etapa, sus ciclistas han llevado tres o ms maillots.
nomequipo
Banesto
director
Miguel Echevarria
26. Nombre de los equipos que slo tienen ciclistas menores de 28 aos.
nomequipo
Euskadi
27. Dorsal y nombre del ciclista que ha llevado el maillot amarillo durante ms etapas.
dorsal
nombre
1 Miguel Indurin
Nombre y el equipo de aquellos corredores menores de 30 aos que han ganado alguna etapa.
Una forma:
SELECT DISTINCT nombre, nomequipo
FROM Ciclista C, Etapa E
WHERE edad < 30 AND C.dorsal=E.dorsal;
Otra forma:
SELECT DISTINCT nombre, nomequipo
FROM Ciclista
WHERE edad < 30 AND dorsal IN ( SELECT DISTINCT dorsal FROM Etapa);
2.
Nombre y equipo de los corredores mayores de 35 aos que han ganado algn puerto.
Una forma:
SELECT DISTINCT nombre, nomequipo
FROM Ciclista C, Puerto P
WHERE C.dorsal=P.dorsal AND edad>32;
Otra forma:
SELECT DISTINCT nombre, nomequipo
FROM Ciclista
WHERE edad>32 AND dorsal IN (SELECT DISTINCT dorsal FROM Puerto);
3.
Datos de las etapas que pasan por algn puerto de montaa y que tienen salida y llegada en la misma poblacin.
Una forma:
SELECT DISTINCT E.numetapa, E.kms, E.salida, E.llegada, E.dorsal
FROM Etapa E, Puerto P
WHERE E.numetapa = P.numetapa AND E.salida = E.llegada;
Otra forma:
SELECT *
FROM Etapa
WHERE salida=llegada AND numetapa IN ( SELECT numetapa FROM Puerto );
4.
Poblaciones que tienen la meta de alguna etapa, pero desde las que no se realiza ninguna salida.
5.
Nombre y el equipo de los ciclistas que han ganado alguna etapa llevando el maillot amarillo, mostrando tambin el
nmero de etapa.
Poblaciones de salida y de llegada de las etapas donde se encuentran puertos con altura superior a 1300 metros.
7.
Nmero de las etapas que tienen algn puerto de montaa, indicando cuntos tiene cada una de ellas.
8.
Nombre y edad de los ciclistas que han llevado dos o ms maillots en una misma etapa.
9.
Obtener el nombre y el equipo de los ciclistas que han llevado algn maillot o que han ganado algn puerto.
UNION
SELECT C.nombre,C.nomequipo
FROM Ciclista C, Puerto P
WHERE C.dorsal=P.dorsal;
10. Obtener los nmeros de las etapas que no tienen puertos de montaa.
11. Obtener la edad media de los ciclistas que han ganado alguna etapa.
SELECT nompuerto
FROM Puerto
WHERE altura > ( SELECT AVG(altura) FROM Puerto ) ;
13. Obtener las poblaciones de salida y de llegada de las etapas donde se encuentran los puertos con mayor
pendiente.
Una forma:
SELECT salida, llegada
FROM Etapa E, Puerto P
WHERE E.numetapa = P.numetapa
AND P.pendiente = ( SELECT MAX(pendiente) FROM Puerto ) ;
Otra forma:
SELECT DISTINCT E.salida, E.llegada
FROM Etapa E, Puerto P
WHERE E.numetapa = P.numetapa
AND P.pendiente >= ALL( SELECT pendiente FROM Puerto ) ;
14. Obtener el dorsal y el nombre de los ciclistas que han ganado los puertos de mayor altura.
Una forma:
SELECT DISTINCT C.dorsal, C.nombre
FROM Ciclista C, Puerto P
WHERE C.dorsal = P.dorsal
AND P.altura = ( SELECT MAX(altura) FROM Puerto) ;
Otra forma:
SELECT DISTINCT C.dorsal,C.nombre
FROM Puerto P, Ciclista C
WHERE P.dorsal=C.dorsal
AND P.altura >= ALL(SELECT altura FROM Puerto) ;
15. Obtener los datos de las etapas cuyos puertos (todos) superan los 1300 metros de altura.
MINUS
SELECT E.*
FROM Puerto P, Etapa E
WHERE P.numetapa=E.numetapa AND P.altura<=1300 ;
16. Obtener la edad del ciclista ms joven, la del ms veterano y la media de edad de los ciclistas que han participado
en la vuelta.
Una forma:
SELECT director, Q.nomequipo
FROM Etapa E, Ciclista C, Equipo Q
WHERE E.dorsal = C.dorsal AND C.nomequipo = Q.nomequipo
AND kms = (SELECT MAX(kms) FROM Etapa);
Y otra forma:
SELECT TOP(1) director, Q.nomequipo
FROM Etapa E, Ciclista C, Equipo Q
WHERE E.dorsal = C.dorsal
AND C.nomequipo = Q.nomequipo
ORDER BY kms DESC;
conjunto
de
filas
del
resultado
de
la
18. Obtener el dorsal y el nombre de los ciclistas que hayan ganado alguna etapa, mostrando tambin el nmero de
etapas que han ganado.
19. Obtener el nombre de los ciclistas que pertenecen a un equipo de ms de cinco ciclistas y que han ganado alguna
etapa, indicando tambin cuntas etapas han ganado.
10
20. Nombre y equipo de los ciclistas que han llevado alguna vez el maillot amarillo, indicando durante cuntas etapas lo
han llevado.
21. Por cada equipo, color de los maillots que han llevado sus ciclistas.
22. Nombre y equipo del ganador de la vuelta (es decir, el que ha lucido el maillot amarillo en la ltima etapa).
24. Nombre y dorsal de los ciclistas mayores de 30 aos que han ganado algn puerto, junto con el nmero de puertos
que han ganado.
25. Nombre y director de los equipos que, en alguna etapa, sus ciclistas han llevado tres o ms maillots.
SELECT nomequipo
FROM Equipo
WHERE nomequipo IN (SELECT nomequipo FROM Ciclista WHERE edad <28)
AND nomequipo NOT IN (SELECT nomequipo FROM Ciclista WHERE edad>=28);
11
27. Dorsal y nombre del ciclista que ha llevado el maillot amarillo durante ms etapas.
Con ALL:
SELECT C.dorsal, C.nombre
FROM Ciclista AS C, Lleva AS L, Maillot AS M
WHERE C.dorsal=L.dorsal AND M.cdigo=L.cdigo AND M.color='amarillo'
GROUP BY C.dorsal, C.nombre
HAVING COUNT(*) >= ALL ( SELECT COUNT(*) AS veces
FROM Lleva LL, Maillot MA
WHERE LL.cdigo = MA.cdigo AND MA.color='amarillo'
GROUP BY LL.dorsal );
Con TOP :
SELECT TOP(1) dorsal, nombre
FROM Ciclista AS C, Lleva AS L, Maillot AS M
WHERE C.dorsal=L.dorsal AND M.cdigo=L.cdigo AND M.color='amarillo'
GROUP BY C.dorsal, C.nombre
ORDER BY COUNT(*) DESC;
12