You are on page 1of 13

1. Obtener el cdigo, el tipo, el color y el premio de todos los maillots que hay. select * from maillots; 2.

Obtener el dorsal y el nombre de los ciclistas cuya edad sea menor o igual que 25 aos. select dorsal, nombre from ciclistas where edad <=25; 3. Obtener el nombre y categoraE (Especial). select nombre, altura from puertos where categoria='E'; 4. Obtener el valor del atributo netapa de aquellas etapas con salida y llegada en la misma ciudad. select numetapa from etapas where salida=llegada; 5. Cuntos ciclistas hay? select count(*) from ciclistas; 6. Cuntos ciclistas hay con edad superior a 25 aos? select count(*) from ciclistas where edad>25; 7. Cuntos equipos hay? select count(*) from equipos; 8. Obtener la media de edad de los ciclistas. select round(avg(edad),2) from ciclistas; 9. Obtener la altura mnima y mxima de los puertos de montaa. select min(altura), max(altura) from puertos; la altura de todos los puertos de

10. Obtener el nombre de cada ciclista junto con el nombre del equipo al que pertenece. select nombre as ciclista, nomeq as equipo from ciclistas c; 11. Obtener el nombre de los ciclistas que sean de Banesto. select nombre from ciclistas where nomeq='Banesto'; 12. Cuntos ciclistas pertenecen al equipo Amore Vita? select count(*) from ciclistas where nomeq='Amore Vita'; 13. Edad media de los ciclistas del equipo TVM. select avg(edad) from ciclistas where nomeq='TVM'; 14. Nombre de los ciclistas que pertenezcan al mismo equipo que Miguel Indurain. select nombre from ciclistas where nomeq = (select nomeq from ciclistas where nombre='Miguel Indurin'); 15. Nombre de los ciclistas que han ganado alguna etapa. Select nombre from ciclistas where dorsal in (select dorsalganador from etapas); 16. Nombre de los ciclistas que han llevado el maillot General. select nombre from ciclistas where dorsal in (select dorsal from llevar where codmaillot = (select codigo from maillots where tipo='General'));

17.

Obtener el nombre del ciclista ms joven. select nombre from ciclistas where edad = (select min(edad) from ciclistas);

18.

Obtener el nmero de ciclistas de cada equipo. select nomeq, count(*) from ciclistas group by nomeq;

19. Obtener ciclistas.

el

nombre

de

los

equipos

que

tengan

ms

de

select nomeq from ciclistas group by nomeq having count(*)>5; 20. Obtener el nmero de puertos que ha ganado cada ciclista. select c.nombre, count(p.dorsalganador) from puertos p right outer join ciclistas c on c.dorsal=p.dorsalganador group by c.nombre; 21. Obtener el nombre de los ciclistas que han ganado ms de un puerto. select c.nombre, count(p.dorsalganador) from puertos p right outer join ciclistas c on c.dorsal=p.dorsalganador group by c.nombre having count(*)>1; 22. Obtener el nombre y el director de los equipos a los que pertenezca algn ciclista mayor de 33 aos. select nombre, director from equipos where nombre in (select nomeq from ciclistas where edad > 33); 23. Nombre de los ciclistas que no pertenezcan a Kelme. select nombre from ciclistas where nomeq != 'Kelme';

24.

Nombre de los ciclistas que no hayan ganado ninguna etapa. select nombre from ciclistas where dorsal not in (select dorsalganador from etapas);

25. Nombre de los ciclistas que no hayan ganado ningn puerto de montaa. select nombre from ciclistas where dorsal not in (select dorsalganador from puertos); 26. Nombre de los ciclistas que hayan ganado ms de un puerto de montaa. select nombre from ciclistas where dorsal in (select dorsalganador from puertos group by dorsalganador having count(*)>1); 27. Qu Indurain? ciclistas han llevado el mismo maillot que Miguel

select nombre from ciclistas where dorsal in (select dorsal from llevar where codmaillot in (select codmaillot from llevar where dorsal= (select dorsal from ciclistas where nombre = 'Miguel Indurin'))) and nombre!='Miguel Indurin';

28. De cada equipo obtener la edad media, la mxima edad y la mnima edad. select nomeq, round(avg(edad),2), max(edad), min(edad) from ciclistas group by nomeq; 29. Nombre de aquellos ciclistas que tengan una edad entre 25 y 30 aos y que no pertenezcan a los equipos Kelme y Banesto. select nombre from ciclistas where edad between 25 and 30 and nomeq not in ('Kelme','Banesto');

30. Nombre de los ciclistas que han ganado la etapa que comienza en Zamora. select nombre from ciclistas where dorsal = (select dorsalganador from etapas where salida='Zamora'); 31. Obtn el nombre y la categora de los puertos ganados por ciclistas del equipo Banesto. select nombre, categoria from puertos where dorsalganador in (select dorsal from ciclistas where nomeq='Banesto'); 32. Obtener el nombre de cada puerto indicando el nmero (netapa) y los kilmetros de la etapa en la que se encuentra el puerto. select nombre, numetapa, numkms from puertos p, etapas e where p.numetapa=e.numero; 33. Obtener el nombre de maillot que hayan llevado. los ciclistas con el color de cada

select distinct nombre, color from ciclistas c, maillots m, llevar l where c.dorsal = l.dorsal and m.codigo = l.codmaillot; 34. Obtener pares de nombre de ciclista y nmero de etapa tal que ese ciclista haya ganado esa etapa habiendo llevado el maillot de color amarillo al menos una vez.
select c.nombre, e.numero from ciclistas c, etapas e where c.dorsal=e.dorsalganador and c.dorsal in (select dorsal from llevar l where l.codmaillot = (select codigo from maillots where color='Amarillo') and l.numetapa < e.numero);

35. Obtener el valor del atributo netapa de las etapas que no comienzan en la misma ciudad en que acab la anterior etapa. select numero from etapas e where salida != (select llegada from etapas e2 where e2.numero=(e.numero-1)); 36. Obtener el valor del atributo netapa y la ciudad de salida de aquellas etapas que no tengan puertos de montaa. select numero, salida from etapas where numero not in (select numetapa from puertos); 37. Obtener la edad media de los ciclistas que han ganado alguna etapa. select round(avg(edad),2) from ciclistas where dorsal in (select dorsalganador from etapas); 38. Selecciona el nombre de los puertos con una altura superior a la altura media de todos los puertos. select nombre from puertos where altura > (select avg(altura) from puertos); 39. Obtener el nombre de la ciudad de salida y de llegada de las etapas donde estn los puertos con mayor pendiente. select llegada, salida from etapas where numero in (select numetapa from puertos where pendiente = (select max(pendiente) from puertos)); 40. Obtener el dorsal y el nombre de los ciclistas que han ganado los puertos de mayor altura. select dorsal, nombre from ciclistas where dorsal in (select dorsalganador from puertos where altura = (select max(altura) from puertos));

41. Obtener el nombre del ciclista ms joven que ha ganado al menos una etapa. select nombre from ciclistas where edad = (select min(edad) from ciclistas where dorsal in (select dorsalganador from etapas)) and dorsal in (select dorsalganador from etapas); 42. Obtener el valor del atributo netapa de aquellas etapas tales que todos los puertos que estn en ellas tienen ms de 700 metros de altura. select numero from etapas where numero not in (select numetapa from puertos where altura < 700) and numero in (select numetapa from puertos); 43. Obtener el nombre y el director de los equipos tales que todos sus ciclistas son mayores de 20 aos. select nombre, director from equipos where nombre not in (select nomeq from ciclistas where edad < 20); 44. Obtener el dorsal y el nombre de los ciclistas tales que todas las etapas que han ganado tienen ms de 170 km (es decir que slo han ganado etapas de ms de 170 km). select dorsal, nombre from ciclistas where dorsal not in (select dorsalganador from etapas where numkms<170) and dorsal in (select dorsalganador from etapas);

45. Obtener el nombre de los ciclistas que han ganado todos los puertos de una etapa y adems han ganado esa misma etapa.
select nombre from ciclistas c where c.dorsal in (select dorsalganador from etapas e where dorsalganador = all (select dorsalganador from puertos p where numetapa=e.numero) and dorsalganador in (select dorsalganador from puertos p where numetapa=e.numero);

46. Obtener el nombre de los equipos tales que todos sus corredores han llevado algn maillot o han ganado algn puerto. select nombre from equipos where nomeq not in (select nomeq from ciclistas where dorsal not in (select dorsal from llevar) and dorsal not in (select dorsalganador from puertos)); 47. Obtener el cdigo y el color de aquellos maillots que slo han sido llevados por ciclistas de un mismo equipo. select codigo, color from maillots m, ciclistas c, llevar l where l.dorsal=c.dorsal and m.codigo=l.codmaillot group by codigo, color having count(distinct nomeq)=1; 48. Obtener el nombre de aquellos equipos tal que sus ciclistas slo hayan ganado puertos de 1 categora.
select distinct nomeq from ciclistas c where not exists (select dorsalganador from puertos p where p.dorsalganador in (select dorsal from ciclistas c2 where c2.nomeq=c.nomeq) and categoria!=1) and exists (select dorsalganador from puertos p where p.dorsalganador in (select dorsal from ciclistas c3 where c3.nomeq=c.nomeq) and categoria=1);

49. Obtener el valor del atributo netapa de aquellas etapas que tienen puertos de montaa indicando cuntos tiene. select numero, count(*) as numpuertos from etapas e, puertos p where e.numero=p.numetapa group by e.numero; 50. Obtener el nombre de ciclistas tiene cada uno. todos los equipos indicando cuntos

select e.nombre, count(c.nomeq) from ciclistas c right outer join equipos e on e.nombre=c.nomeq group by e.nombre; 51. Obtener el director y el nombre de los equipos que tengan ms de 3 ciclistas y cuya edad media sea igual o inferior a 30 aos. select e.nombre, director from equipos e, ciclistas c where e.nombre=c.nomeq group by e.nombre having count(*)>3 and avg(edad)<=30; 52. Obtener el nombre de los ciclistas que pertenezcan a un equipo que tenga ms de cinco corredores y que hayan ganado alguna etapa indicando cuntas etapas ha ganado. Select c.nombre, count(*) from ciclistas c, equipos e, etapas et where c.nomeq=e.nombre and c.dorsal=et.dorsalganador and e.nombre in (select e.nombre from equipos e, ciclistas c where e.nombre=c.nomeq group by e.nombre having count(*)>5) group by c.nombre;

53. Obtener el nombre de los equipos y la edad media de sus ciclistas de aquellos equipos que tengan la media de edad mxima de todos los equipos. create view edadesmedias as select e.nombre, avg(edad) as edadmedia from ciclistas c, equipos e where c.nomeq = e.nombre group by e.nombre; select e.nombre, avg(edad) from ciclistas c, equipos e where c.nomeq = e.nombre group by e.nombre having avg(edad)=(select max(edadmedia) from edadesmedias); 54. Obtener el director de los equipos cuyos ciclistas han llevado ms das maillots de cualquier tipo. create view numdiasmaillotporeq as select nomeq, count(*) as numdias from ciclistas c, llevar l where c.dorsal=l.dorsal group by nomeq; select director from equipos where nombre in (select nomeq from ciclistas c, llevar l where c.dorsal=l.dorsal group by nomeq having count(*)=(select max(numdias) from numdiasmaillotporeq)); 55. Obtener el cdigo y el color del maillot que ha sido llevado por algn ciclista que no ha ganado ninguna etapa. select codigo, color from maillots where codigo in (select codmaillot from llevar where dorsal not in (select dorsalganador from etapas));

56. Obtener el valor del atributo netapa, la ciudad de salida y la ciudad de llegada de las etapas de ms de 190 km y que tengan por lo menos dos puertos. Select numero, salida, llegada from etapas where numkms>190 and numero in (select numetapa from puertos group by numetapa having count(*)>=2); 57. Obtener el dorsal y el nombre de los ciclistas que no han llevado todos los maillots que ha llevado el ciclista de dorsal 2. select c.dorsal, nombre from ciclistas c where exists (select codmaillot from llevar where dorsal=2 and codmaillot not in (select codmaillot from llevar l where l.dorsal=c.dorsal)); 58. Obtener el dorsal y el nombre de los ciclistas que han llevado al menos un maillot de los que ha llevado el ciclista de dorsal 2. select c.dorsal, nombre from ciclistas c where dorsal in (select dorsal from llevar where codmaillot in (select codmaillot from llevar where dorsal=2)); 59. Obtener el dorsal y el nombre de los ciclistas que no han llevado ningn maillot de los que ha llevado el ciclista de dorsal 2. select c.dorsal, nombre from ciclistas c where dorsal not in (select dorsal from llevar where codmaillot in (select codmaillot from llevar where dorsal=2));

60. Obtener el dorsal y nombre de los ciclistas que han llevado exactamente los mismos maillots que ha llevado el ciclista de dorsal 1. select c.dorsal, nombre from ciclistas c where not exists (select codmaillot from llevar where dorsal=1 and codmaillot not in (select codmaillot from llevar l where l.dorsal=c.dorsal)) and not exists (select codmaillot from llevar where dorsal=c.dorsal and codmaillot not in (select codmaillot from llevar l where l.dorsal=1)); 61. Obtener el dorsal y el nombre del ciclista que ha llevado durante ms kilmetros un mismo maillot e indicar tambin el color de dicho maillot. create view kmspormaillot as select dorsal, codmaillot, sum(numkms) as kms from etapas e, llevar l, maillots m where e.numero=l.numetapa and m.codigo=l.codmaillot group by dorsal, codmaillot; Select dorsal, codmaillot, color, sum(numkms) from etapas e, llevar l, maillots m where e.numero =l.numetapa and m.codigo=l.codmaillot group by dorsal, codmaillot, color having sum(numkms)=(select max(kms) from kmspormaillot); 62. Obtener el dorsal y el nombre de los ciclistas que han llevado dos tipos de maillot menos de los que ha llevado el ciclista de dorsal 3.
select dorsal, nombre from ciclistas where dorsal in (select dorsal from llevar group by dorsal having count(*) + 2 =(select count(distinct codmaillot) from llevar where dorsal=3));

63. Obtener el valor del atributo netapa y los km de las etapas que tienen puertos de montaa. select numero, numkms from etapas where exists (select numetapa from puertos where numetapa=numero);

You might also like