Sie sind auf Seite 1von 8

PRCTICA 6. FRANCISCO JAVIER 1. Obtener el cdigo, el tipo, el color y el premio de todos los maillots que hay.

SELECT codigo, tipo, color, premio FROM maillot 2. Obtener el dorsal y el nombre de los ciclistas cuya edad sea menor o igual que 25 aos. SELECT dorsal, nombre FROM ciclista WHERE edad >= 25 3. Obtener el nombre y la altura de todos los puertos de categora E (Especial). SELECT nompuerto, altura FROM puerto WHERE categoria='E' 4. Obtener el valor del atributo netapa de aquellas etapas con salida y llegada en la misma ciudad. SELECT netapa FROM etapa WHERE salida=llegada 5. Cuntos ciclistas hay? SELECT COUNT(*) FROM ciclista 6. Cuntos ciclistas hay con edad superior a 25 aos? SELECT COUNT(*) FROM ciclista WHERE edad>25 7. Cuntos equipos hay? SELECT COUNT(*) FROM equipo; 8. Obtener la media de edad de los ciclistas. SELECT AVG(edad) FROM ciclista 9. Obtener la altura mnima y mxima de los puertos de montaa. SELECT MAX(altura), MIN(altura) FROM puerto 10. Obtener el nombre de cada ciclista junto con el nombre del equipo al que pertenece SELECT nombre, nomeq FROM ciclista 11. Obtener el nombre de los ciclistas que sean de Banesto. SELECT nombre FROM ciclista WHERE nomeq='Banesto' 12. Cuntos ciclistas pertenecen al equipo Amore Vita? SELECT COUNT(*) FROM ciclista WHERE nomeq='amore vita' 13. Edad media de los ciclistas del equipo TVM. SELECT AVG(edad) FROM ciclista WHERE nomeq='tvm' 14. Nombre de los ciclistas que pertenezcan al mismo equipo que Miguel Indurain SELECT nombre FROM ciclista WHERE nomeq=(SELECT nomeq FROM ciclista WHERE nombre='miguel indurain'); 15. Nombre de los ciclistas que han ganado alguna etapa. SELECT DISTINCT nombre FROM ciclista, etapa WHERE ciclista.dorsal=etapa.dorsal 16. Nombre de los ciclistas que han llevado el maillot General. SELECT DISTINCT nombre FROM ciclista, llevar, maillot WHERE ciclista.dorsal=llevar.dorsal AND llevar.codigo=maillot.codigo AND tipo='general' 17. Obtener el nombre del ciclista ms joven SELECT nombre FROM ciclista WHERE edad IN (SELECT MIN(edad) FROM ciclista)

18. Obtener el nmero de ciclistas de cada equipo. SELECT nomeq, COUNT(*) FROM ciclista GROUP BY nomeq 19. Obtener el nombre de los equipos que tengan ms de 5 ciclistas. SELECT nomeq, COUNT(*) FROM ciclista GROUP BY nomeq HAVING COUNT(*)>5 20. Obtener el nmero de puertos que ha ganado cada ciclista. SELECT nombre, COUNT(*) FROM ciclista, puerto WHERE ciclista.dorsal=puerto.dorsal GROUP BY nombre HAVING COUNT(*)>1 21. Obtener el nombre de los ciclistas que han ganado ms de un puerto. SELECT nombre, COUNT(*) FROM ciclista, puerto WHERE ciclista.dorsal=puerto.dorsal GROUP BY 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 equipo.nomeq, director FROM ciclista, equipo WHERE ciclista.nomeq=equipo.nomeq AND ciclista.edad>33 23. Nombre de los ciclistas que no pertenezcan a Kelme SELECT nombre FROM ciclista WHERE nomeq NOT IN ('Kelme') 24. Nombre de los ciclistas que no hayan ganado ninguna etapa. SELECT nombre FROM ciclista WHERE dorsal NOT IN (SELECT dorsal FROM etapa) 25. Nombre de los ciclistas que no hayan ganado ningn puerto de montaa. SELECT nombre FROM ciclista WHERE dorsal NOT IN (SELECT dorsal FROM puerto) 26. Nombre de los ciclistas que hayan ganado ms de un puerto de montaa. SELECT nombre, COUNT(*) "Numero de puertos ganados" FROM ciclista, puerto WHERE ciclista.dorsal=puerto.dorsal GROUP BY nombre HAVING COUNT(*)>1 27. Qu ciclistas han llevado el mis104mo maillot que Miguel Indurain? SELECT DISTINCT nombre FROM ciclista, maillot, llevar WHERE ciclista.dorsal=llevar.dorsal AND llevar.codigo=maillot.codigo AND maillot.codigo IN (SELECT maillot.codigo FROM maillot, llevar, ciclista WHERE ciclista.dorsal=llevar.dorsal AND llevar.codigo=maillot.codigo AND ciclista.nombre='Miguel Indurain') 28. De cada equipo obtener la edad media, la mxima edad y la mnima edad. SELECT nomeq, AVG(edad), MIN(edad), MAX(edad) FROM ciclista 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 ciclista WHERE edad BETWEEN 25 AND 30 AND nomeq NOT IN ('Kelme', 'Banesto') SELECT * FROM ciclista 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 ciclista, etapa WHERE etapa.dorsal=ciclista.dorsal AND llegada='Zamora'

31. Obtn el nombre y la categora de los puertos ganados por ciclistas del equipo Banesto. SELECT nombre FROM ciclista, etapa WHERE etapa.dorsal=ciclista.dorsal AND salida='Zamora' 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 nompuerto, puerto.netapa, km FROM etapa, puerto WHERE etapa.netapa=puerto.netapa 33. Obtener el nombre de los ciclistas con el color de cada maillot que hayan llevado. SELECT nombre, color FROM ciclista, maillot, llevar WHERE llevar.dorsal=ciclista.dorsal AND llevar.codigo=maillot.codigo

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 nombre, netapa FROM ciclista, maillot, llevar WHERE llevar.dorsal=ciclista.dorsal AND llevar.codigo=maillot.codigo AND color='amarillo' 35. Obtener el valor del atributo netapa de las etapas que no comienzan en la misma ciudad en que acab la anterior etapa. SELECT e1.netapa, e1.llegada, e2.netapa, e2.salida FROM etapa e1, etapa e2 WHERE e1.netapa+1=e2.netapa AND e1.llegada <> e2.salida 36. Obtener el valor del atributo netapa y la ciudad de salida de aquellas etapas que no tengan puertos de montaa. SELECT netapa, salida FROM etapa WHERE netapa NOT IN (SELECT netapa FROM puerto) 37. Obtener la edad media de los ciclistas que han ganado alguna etapa. SELECT AVG(edad) FROM ciclista WHERE dorsal IN (SELECT dorsal FROM etapa) igual a 23.3 Es as ((21+29+20)/3), y no es as: SELECT AVG(edad) FROM ciclista, etapa WHERE ciclista.dorsal=etapa.dorsal igual a 22.4, porque aqu lo que est haciendo es (21x3 + 29 + 20) / 5 38. Selecciona el nombre de los puertos con una altura superior a la altura media de todos los puertos. SELECT nompuerto FROM puerto WHERE altura > (SELECT AVG(altura) FROM puerto) 39. Obtener el nombre de la ciudad de salida y de llegada de las etapas donde estn los puertos con mayor pendiente. SELECT salida, llegada FROM etapa WHERE netapa IN (SELECT netapa FROM puerto WHERE pendiente = (SELECT MAX(pendiente) FROM puerto)) 40. Obtener el dorsal y el nombre de los ciclistas que han ganado los puertos de mayor altura. SELECT ciclista.dorsal, nombre FROM ciclista, puerto WHERE ciclista.dorsal=puerto.dorsal AND puerto.altura=(SELECT MAX(altura) FROM puerto) 41. Obtener el nombre del ciclista ms joven que ha ganado al menos una etapa. SELECT nombre FROM ciclista, etapa WHERE ciclista.dorsal=etapa.dorsal AND

edad=(SELECT MIN(edad) FROM ciclista, etapa WHERE etapa.dorsal=ciclista.dorsal) 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 DISTINCT etapa.netapa FROM etapa, puerto WHERE altura>700 AND puerto.netapa=etapa.netapa 43. Obtener el nombre y el director de los equipos tales que todos sus ciclistas son mayores de 20 aos. SELECT DISTINCT equipo.nomeq, director FROM equipo, ciclista WHERE ciclista.nomeq=equipo.nomeq AND equipo.nomeq NOT IN (SELECT nomeq FROM ciclista 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 ciclista.dorsal, nombre FROM ciclista, etapa WHERE etapa.dorsal=ciclista.dorsal AND km>170 45. Obtener el nombre de los ciclistas que han ganado todos los puertos de una etapa y adems han ganado esa misma etapa. SELECT DISTINCT nombre FROM ciclista, puerto WHERE ciclista.dorsal=puerto.dorsal AND nombre IN (SELECT DISTINCT nombre FROM ciclista, etapa WHERE ciclista.dorsal=etapa.dorsal) 46. Obtener el nombre de los equipos tales que todos sus corredores han llevado algn maillot o han ganado algn puerto. SELECT DISTINCT nomeq FROM ciclista, llevar, puerto, maillot WHERE ciclista.dorsal=puerto.dorsal AND ciclista.dorsal=llevar.dorsal AND llevar.codigo=maillot.codigo 47. Obtener el cdigo y el color de aquellos maillots que slo han sido llevados por ciclistas de un mismo equipo. DEJAR PARA LUEGO Select maillot.codigo, maillot.color, equipo.nomeq From maillot, llevar, ciclista, equipo Where maillot.codigo=llevar.codigo and llevar.dorsal=ciclista.dorsal and ciclista.nomeq=equipo.nomeq And not exists (select * From llevar ll, ciclista c Where ll.codigo=maillot.codigo and ll.dorsal=c.dorsal and c.nomeq<>ciclista.nomeq); 48. Obtener el nombre de aquellos equipos tal que sus ciclistas slo hayan ganado puertos de 1 categora. SELECT nomeq FROM ciclista WHERE dorsal IN (SELECT dorsal FROM puerto WHERE categoria=1) 49. Obtener el valor del atributo netapa de aquellas etapas que tienen puertos de montaa indicando cuntos tiene. SELECT DISTINCT etapa.netapa"Numero de etapa", COUNT(*)"Cantidad de etapa" FROM etapa, puerto WHERE etapa.netapa=puerto.netapa GROUP BY etapa.netapa 50. Obtener el nombre de todos los equipos indicando cuntos ciclistas tiene cada uno. SELECT DISTINCT nomeq"Nombre de equipo", COUNT(nombre) FROM ciclista GROUP BY nomeq

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 director, ciclista.nomeq, COUNT(*) "Cant. de ciclistas" FROM ciclista, equipo WHERE ciclista.nomeq=equipo.nomeq GROUP BY ciclista.nomeq 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 nombre FROM ciclista WHERE nomeq = (SELECT nomeq FROM ciclista GROUP BY nomeq HAVING COUNT(*)>5) AND nombre IN (SELECT nombre FROM ciclista, etapa WHERE ciclista.dorsal=etapa.dorsal GROUP BY netapa) 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. (RPI a partir de aki) Select nomeq, avg(ciclista.edad) From ciclista Having avg(edad ) = (select max(avg(edad) ) From ciclista c Group by c.nomeq) Group by nomeq; 54. Obtener el director de los equipos cuyos ciclistas han llevado ms das maillots de cualquier tipo. Select e.descripcin, c.nomeq, count (*) From ciclista c, llevar ll, equipo e Where c.dorsal =ll.dorsal and c.nomeq=e.nomeq Having count(*) = (select max(count(*)) From llevar ll1, ciclista c1 Where ll1.dorsal=c1.dorsal Group by (c1.nomeq) ) Group by e.descripcin, c.nomeq; (hasta Aki) 55. Obtener el cdigo y el color del maillot que ha sido llevado por algn ciclista que no ha ganado ninguna etapa. 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. 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. 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. 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. 60. Obtener el dorsal y nombre de los ciclistas que han llevado exactamente los mismos maillots que ha llevado el ciclista de 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. 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. 63. Obtener el valor del atributo netapa y los km de las etapas que tienen puertos de montaa.

use musicago /*1. Cuntos discos hay*/ select * from discoselect count(nombre) from disco /*2. Selecciona el nombre de los grupos que no sean de Espaa.*/select nombre from grupo where grupo.pais like '[^espaa]%' /*3. Obtener el ttulo de las canciones con ms de 5 minutos de duracin.*/select titulo from cancionwhere duracion > 5.0 /*4. Segn los datos en la base de datos, obtener la lista de las distintas funciones que se pueden realizar en un grupo.*/select funcion from pertenece group by funcion /*5. Selecciona el nombre y la sede de los clubes de fans con ms de 500 socios.*/ select nombre,sede from club where num > 500 /*6. Obtener el nombre y la sede de cada club de fans de grupos de Espaa as como el nombre del grupo al que admiran.*/ select club.nombre,sede,num from club, grupo where club.cod_gru=grupo.cod and pais='Espaa' /*7. Obtener el nombre de los artistas que pertenezcan a un grupo de Espaa.*/

select artista.nombre from artista, grupo, pertenecewhere artista.dni = pertenece.dni and pertenece.cod = grupo.cod and grupo.pais ='espaa' ../*8. Obtener el nombre de los discos que contienen alguna cancin que dure ms de 5 minutos.*/ select disco.nombre,cancion.duracion fromdisco,cancion,pertenecewhere disco.cod=cancion.cod and pertenece.cod=cancion.cod andcancion.duracion >5 /*9. Obtener los nombres de las canciones que dan nombre al disco en el que aparecen.*/ select disco.nombre from disco, cancion, estawhere disco.cod = esta.cod and esta.can = cancion.cod and cancion.titulo = disco.nombre ...../*10. Obtener los nombres de compaas y direcciones postales de aquellas compaas que han grabado algn disco que empiece por A.*/ select companyia.nombre ,companyia.dir as 'direccion ' from companyia, discowhere companyia.cod = disco.cod_comp and disco.nombre like '[a]%' ..../*11. Obtener el nombre de los discos del grupo ms viejo.*/ select disco.nombre from grupo,discowhere grupo.cod=disco.cod_gru /*12. Obtener el nombre de los discos grabados por grupos con club de fans con ms de 5000 personas.*/ select disco.nombre,grupo.cod,club.num from grupo, disco, clubwhere grupo.cod = disco.cod_gru and grupo.cod = club.cod_gru and club.num >500 /*13.Obtener el nombre de los clubes con mayor nmero de fans indicando ese nmero.*/select nombre,num from clubwhere num > 23400 and num <23415 /*14.Obtener el ttulo de las canciones de mayor duracin indicando la duracin.*/select titulo,duracion from cancionwhere duracion >= 6 /*15. Obtener el nombre de las compaas discogrficas que no han trabajado con grupos espaoles.*/ select companyia.nombre from grupo, disco,companyiawhere grupo.cod =disco.cod_gru and disco.cod_comp=companyia.cod and grupo.pais like '[^espaa] %' /*16. Obtener el nombre de las compaas discogrficas que solo han trabajado con grupos espaoles.*/ select companyia.nombre from grupo, disco,companyiawhere grupo.cod =disco.cod_gru and disco.cod_comp=companyia.cod and grupo.pais ='espaa' /*17.. Obtener el nombre y la direccin de aquellas compaas discogrficas que hayan grabado todos los discos de algn grupo.*/ select * from grupo,companyia where companyia.cod=grupo.cod /*18.Obtener el nombre de los grupos que sean de Espaa y la suma de sus fans.*/select * from grupo, /*19.. Obtener para cada grupo con ms de dos componentes el nombre y el nmero de componentes del grupo.*/ /*20.. Obtener el nmero de discos de cada grupo.*/select * from disco/*21.Obtener el nmero de canciones que ha grabado cada compaa discogrfica y su direccin.*/ /*22. Obtener los nombre de los artistas de grupos con clubes de fans de ms de 500

personas y que el grupo sea de Inglaterra.*/ select artista.nombre,grupo.nombre,grupo.pais,club.num from grupo, artista, club,pertenecewhere artista.dni= pertenece.dni and grupo.cod=pertenece.cod and grupo.cod=club.cod_gru and grupo.pais='inglaterra'and club.num>500 /*23. Obtener el ttulo de las canciones de todos los discos del grupo U2.*/ select cancion.titulo from grupo,disco,cancion,estawhere cancion.cod =esta.can and disco.cod=esta.cod and grupo.cod=disco.cod_gru and grupo.nombre like '[u2]%' /*24. El do dinmico por fin se jubila; para sustituirles se pretende hacer una seleccin sobre todos los pares de artistas de grupos espaoles distintos tales que el primero sea voz y el segundo guitarra. Obtener dicha seleccin.*/ /*25.Obtener el nombre de los artistas que pertenecen a ms de un grupo. */select * from grupo,artista/*26. Obtener el ttulo de la cancin de mayor duracin si es nica.*/ select titulo,duracion from cancionwhere cancion.duracion=6 /*27.Obtener el dcimo (debe haber slo 9 por encima de l) club con mayor nmero de fans indicando ese nmero.*/ /*28.Obtener el nombre de los artistas que tengan la funcin de bajo en un nico grupo y que adems ste tenga ms de dos miembros*/ /*29.Cul es la compaa discogrfica que ms canciones ha grabado?*/ select * from artistaselect * from cancionselect * from clubselect * from companyiaselect * from discoselect * from dtpropertiesselect * from estaselect * from gruposelect * from pertenece