Sie sind auf Seite 1von 12

EJERCICIO CICLISTA Cree las tablas y defina los tipos de datos de acuerdo al siguiente Modelo entidad relacin fsico

y a los datos que se desean ingresar :

CREAR BASE DE DATOS:

/ *==============================================================* / /* Table: CICLISTA */ / *==============================================================* / create table CICLISTA ( DORSAL VARCHAR2(25) not null, NOMBRE VARCHAR2(45), EDAD NUMBER, NOMEQ VARCHAR2(25), constraint PK_CICLISTA primary key (DORSAL) ); / *==============================================================* / /* Table: EQUIPO */ / *==============================================================* / create table EQUIPO ( NOMEQ VARCHAR2(25) not null, DESCRIPCION VARCHAR2(45), constraint PK_EQUIPO primary key (NOMEQ) ); / *==============================================================* / /* Table: ETAPA */ / *==============================================================* / create table ETAPA ( NETAPA NUMBER not null, KM FLOAT, SALIDA VARCHAR2(45), LLEGADA VARCHAR2(45), DORSAL VARCHAR2(45), constraint PK_ETAPA primary key (NETAPA) ); / *==============================================================* / /* Table: LLEVAR */ / *==============================================================* / create table LLEVAR ( DORSAL VARCHAR2(25) not null, NETAPA NUMBER, CODIGO VARCHAR2(25), constraint PK_LLEVAR primary key (DORSAL) ); / *==============================================================* / /* Table: MAILLOT */ / *==============================================================* / create table MAILLOT ( CODIGO VARCHAR2(25) not null, TIPO VARCHAR2(45), COLOR VARCHAR2(45), PREMIO VARCHAR2(45), constraint PK_MAILLOT primary key (CODIGO) ); / *==============================================================* / /* Table: PUERTO */

/ *==============================================================* / create table PUERTO ( NOMPUERTO VARCHAR2(45) not null, ALTURA FLOAT, CATEGORIA VARCHAR2(45), PENDIENTE VARCHAR2(45), NETAPA NUMBER, DORSAL VARCHAR2(25), constraint PK_PUERTO primary key (NOMPUERTO) ); alter table CICLISTA add constraint FK_CICLISTA_ES_PARTE__EQUIPO foreign key (NOMEQ) references EQUIPO (NOMEQ); alter table ETAPA add constraint FK_ETAPA_TIENE_CICLISTA foreign key (DORSAL) references CICLISTA (DORSAL); alter table LLEVAR add constraint FK_LLEVAR_CUENTA_CO_CICLISTA foreign key (DORSAL) references CICLISTA (DORSAL); alter table LLEVAR add constraint FK_LLEVAR_POSEE_MAILLOT foreign key (CODIGO) references MAILLOT (CODIGO); alter table LLEVAR add constraint FK_LLEVAR_POSEEN_ETAPA foreign key (NETAPA) references ETAPA (NETAPA); alter table PUERTO add constraint FK_PUERTO_ESTA_EN_CICLISTA foreign key (DORSAL) references CICLISTA (DORSAL); alter table PUERTO add constraint FK_PUERTO_TIENEN_ETAPA foreign key (NETAPA) references ETAPA (NETAPA);

INSERCIONES

-- TABLA EQUIPO INSERT INTO EQUIPO (NOMEQ, DESCRIPCION) VALUES ('EQP001','EQUIPO 1'); INSERT INTO EQUIPO (NOMEQ, DESCRIPCION) VALUES ('EQP002','EQUIPO 2'); INSERT INTO EQUIPO (NOMEQ, DESCRIPCION) VALUES ('EQP003','EQUIPO 3'); INSERT INTO EQUIPO (NOMEQ, DESCRIPCION) VALUES ('EQP004','EQUIPO 4'); INSERT INTO EQUIPO (NOMEQ, DESCRIPCION) VALUES ('EQP005','EQUIPO 5'); INSERT INTO EQUIPO (NOMEQ, DESCRIPCION) VALUES ('EQP006','EQUIPO 6'); INSERT INTO EQUIPO (NOMEQ, DESCRIPCION) VALUES ('EQP007','EQUIPO 7'); INSERT INTO EQUIPO (NOMEQ, DESCRIPCION) VALUES ('EQP008','EQUIPO 8'); INSERT INTO EQUIPO (NOMEQ, DESCRIPCION) VALUES ('EQP009','EQUIPO 9'); INSERT INTO EQUIPO (NOMEQ, DESCRIPCION) VALUES ('EQP010','EQUIPO 10'); SELECT * FROM EQUIPO; -- TABLA MAILLOT INSERT INTO MAILLOT (CODIGO, TIPO, COLOR, PREMIO) VALUES ('COD001','GENERAL', 'AMARILLO', 100000 ); INSERT INTO MAILLOT (CODIGO, TIPO, COLOR, PREMIO) VALUES ('COD002','MONTAA', 'BLANCO - ROJO', 50000 ); INSERT INTO MAILLOT (CODIGO, TIPO, COLOR, PREMIO) VALUES ('COD003','NOVATOS', 'VERDE-NEGRO', 1000 ); INSERT INTO MAILLOT (CODIGO, TIPO, COLOR, PREMIO) VALUES ('COD004','EXPERTOS', 'AZUL-BLANCO', 250000 ); INSERT INTO MAILLOT (CODIGO, TIPO, COLOR, PREMIO) VALUES ('COD005','EXTREMO', 'GRIS', 70000 ); INSERT INTO MAILLOT (CODIGO, TIPO, COLOR, PREMIO) VALUES ('COD006','LIBRE', 'ROJO', 10000 ); INSERT INTO MAILLOT (CODIGO, TIPO, COLOR, PREMIO) VALUES ('COD007','GRUPOS', 'BLANCO - ROJO - NEGRO', 10000 ); INSERT INTO MAILLOT (CODIGO, TIPO, COLOR, PREMIO) VALUES ('COD008','GRAN MASTER', 'AZUL - NARANJA', 10000 ); INSERT INTO MAILLOT (CODIGO, TIPO, COLOR, PREMIO)

VALUES ('COD009','MIXTO', 'NARANJA', 10000 ); INSERT INTO MAILLOT (CODIGO, TIPO, COLOR, PREMIO) VALUES ('COD010','RELEVOS', 'ROJO - VERDE', 10000 ); SELECT * FROM MAILLOT; -- TABLA CICLISTA INSERT INTO CICLISTA (DORSAL, NOMBRE, EDAD, NOMEQ) VALUES ('DRS001', 'CICLISTA 001', 17, 'EQP001'); INSERT INTO CICLISTA (DORSAL, NOMBRE, EDAD, NOMEQ) VALUES ('DRS002', 'CICLISTA 002', 22, 'EQP003'); INSERT INTO CICLISTA (DORSAL, NOMBRE, EDAD, NOMEQ) VALUES ('DRS003', 'CICLISTA 003', 27, 'EQP006'); INSERT INTO CICLISTA (DORSAL, NOMBRE, EDAD, NOMEQ) VALUES ('DRS004', 'CICLISTA 004', 28, 'EQP005'); INSERT INTO CICLISTA (DORSAL, NOMBRE, EDAD, NOMEQ) VALUES ('DRS005', 'CICLISTA 005', 30, 'EQP007'); INSERT INTO CICLISTA (DORSAL, NOMBRE, EDAD, NOMEQ) VALUES ('DRS006', 'CICLISTA 006', 55, 'EQP009'); INSERT INTO CICLISTA (DORSAL, NOMBRE, EDAD, NOMEQ) VALUES ('DRS007', 'CICLISTA 007', 32, 'EQP002'); INSERT INTO CICLISTA (DORSAL, NOMBRE, EDAD, NOMEQ) VALUES ('DRS008', 'CICLISTA 008', 12, 'EQP004'); INSERT INTO CICLISTA (DORSAL, NOMBRE, EDAD, NOMEQ) VALUES ('DRS009', 'CICLISTA 009', 33, 'EQP008'); INSERT INTO CICLISTA (DORSAL, NOMBRE, EDAD, NOMEQ) VALUES ('DRS010', 'CICLISTA 010', 21, 'EQP010'); SELECT * FROM CICLISTA; -- TABLA ETAPA INSERT INTO ETAPA (NETAPA, KM, SALIDA, LLEGADA, DORSAL) VALUES (1, 10,'SLD001','LGDA001','DRS001' ); INSERT INTO ETAPA (NETAPA, KM, SALIDA, LLEGADA, DORSAL) VALUES (2, 12,'SLD002','LGDA003','DRS002' ); INSERT INTO ETAPA (NETAPA, KM, SALIDA, LLEGADA, DORSAL) VALUES (3, 20,'SLD003','LGDA005','DRS004' ); INSERT INTO ETAPA (NETAPA, KM, SALIDA, LLEGADA, DORSAL) VALUES (4, 15,'SLD004','LGDA007','DRS006' ); INSERT INTO ETAPA (NETAPA, KM, SALIDA, LLEGADA, DORSAL) VALUES (5, 10,'SLD005','LGDA009','DRS008' ); INSERT INTO ETAPA (NETAPA, KM, SALIDA, LLEGADA, DORSAL) VALUES (6, 22,'SLD006','LGDA002','DRS003' ); INSERT INTO ETAPA (NETAPA, KM, SALIDA, LLEGADA, DORSAL) VALUES (7, 20,'SLD007','LGDA004','DRS005' ); INSERT INTO ETAPA (NETAPA, KM, SALIDA, LLEGADA, DORSAL) VALUES (8, 12,'SLD008','LGDA006','DRS007' ); INSERT INTO ETAPA (NETAPA, KM, SALIDA, LLEGADA, DORSAL) VALUES (9, 10,'SLD009','LGDA008','DRS009' ); INSERT INTO ETAPA (NETAPA, KM, SALIDA, LLEGADA, DORSAL) VALUES (10, 15,'SLD010','LGDA010','DRS010' ); SELECT * FROM ETAPA; -- TABLA LLEVAR INSERT INTO LLEVAR (DORSAL, NETAPA,CODIGO) VALUES ('DRS001',1,'COD001' ); INSERT INTO LLEVAR (DORSAL, NETAPA,CODIGO) VALUES ('DRS002',2,'COD002' ); INSERT INTO LLEVAR (DORSAL, NETAPA,CODIGO) VALUES ('DRS003',3,'COD003' ); INSERT INTO LLEVAR (DORSAL, NETAPA,CODIGO) VALUES ('DRS004',4,'COD004' ); INSERT INTO LLEVAR (DORSAL, NETAPA,CODIGO) VALUES ('DRS005',5,'COD005' ); INSERT INTO LLEVAR (DORSAL, NETAPA,CODIGO) VALUES ('DRS006',6,'COD006' ); INSERT INTO LLEVAR (DORSAL, NETAPA,CODIGO) VALUES ('DRS007',7,'COD007' ); INSERT INTO LLEVAR (DORSAL, NETAPA,CODIGO) VALUES ('DRS008',8,'COD008' ); INSERT INTO LLEVAR (DORSAL, NETAPA,CODIGO) VALUES ('DRS009',9,'COD009' ); INSERT INTO LLEVAR (DORSAL, NETAPA,CODIGO) VALUES ('DRS010',10,'COD010' ); SELECT * FROM LLEVAR; -- TABLA PUERTO INSERT INTO PUERTO (NOMPUERTO, ALTURA, CATEGORIA, PENDIENTE, NETAPA,DORSAL) VALUES ('PRTO-001',1.75, 'CTGR001','DRS001',1,'DRS001' ); INSERT INTO PUERTO (NOMPUERTO, ALTURA, CATEGORIA, PENDIENTE, NETAPA,DORSAL) VALUES ('PRTO-002',2.03, 'CTGR002','DRS002',4,'DRS004' );

INSERT INTO PUERTO (NOMPUERTO, ALTURA, CATEGORIA, PENDIENTE, VALUES ('PRTO- 003' 2.15, 'CTGR003','DRS004',2,'DRS002' ); , INSERT INTO PUERTO (NOMPUERTO, ALTURA, CATEGORIA, PENDIENTE, VALUES ('PRTO-004',1.88, 'CTGR004','DRS006',3,'DRS003' ); INSERT INTO PUERTO (NOMPUERTO, ALTURA, CATEGORIA, PENDIENTE, VALUES ('PRTO-005',1.90, 'CTGR005','DRS008',5,'DRS005' ); INSERT INTO PUERTO (NOMPUERTO, ALTURA, CATEGORIA, PENDIENTE, VALUES ('PRTO-006',2.05, 'CTGR006','DRS010',6,'DRS006' ); INSERT INTO PUERTO (NOMPUERTO, ALTURA, CATEGORIA, PENDIENTE, VALUES ('PRTO-007',1.80, 'CTGR007','DRS003',7,'DRS007' ); INSERT INTO PUERTO (NOMPUERTO, ALTURA, CATEGORIA, PENDIENTE, VALUES ('PRTO-008',1.50, 'CTGR008','DRS005',8,'DRS008' ); INSERT INTO PUERTO (NOMPUERTO, ALTURA, CATEGORIA, PENDIENTE, VALUES ('PRTO-009',2.15, 'CTGR009','DRS007',9,'DRS009' ); INSERT INTO PUERTO (NOMPUERTO, ALTURA, CATEGORIA, PENDIENTE, VALUES ('PRTO-010',1.95, 'CTGR010','DRS009',10,'DRS010' );

NETAPA,DORSAL) NETAPA,DORSAL) NETAPA,DORSAL) NETAPA,DORSAL) NETAPA,DORSAL) NETAPA,DORSAL) NETAPA,DORSAL) NETAPA,DORSAL)

a) Realiza las siguientes consultas en SQL: 1. Nombre de los ciclistas que han ganado alguna etapa.
SELECT DISTINCT C.NOMBRE FROM CICLISTA C, EQUIPO E, ETAPA ET, PUERTO P, LLEVAR LL, MAILLOT M WHERE C.DORSAL = P.DORSAL AND P.DORSAL = ET.DORSAL AND P.NETAPA = LL.NETAPAAND LL.CODIGO = M.CODIGO;

2.

Obtener el nombre del ciclista que tiene ms de 20 aos.


SELECT C.NOMBRE AS CICLISTA FROM CICLISTA C WHERE C.EDAD > 20;

3.

Obtener el nmero de ciclistas de cada equipo.


SELECT NOMEQ AS EQUIPO, COUNT(NOMEQ) AS "INTEGRANTES" FROM CICLISTA GROUP BY NOMEQ;

4. Obtener el nombre de los equipos que tengan un nmero mayor al promedio de ciclistas.
SELECT NOMEQ AS EQUIPO, COUNT(NOMEQ) AS "INTEGRANTES" FROM CICLISTA GROUP BY NOMEQ HAVING COUNT(NOMEQ)> (SELECT AVG(COUNT(NOMBRE)) FROM CICLISTA GROUP BY NOMBRE);

5.

Obtener el nmero de puertos que ha ganado cada ciclista.


SELECT C.NOMBRE, COUNT(P.NOMPUERTO) AS "NUM. PUERTOS" FROM CICLISTA C, PUERTO P, LLEVAR LL WHERE C.DORSAL = P.DORSAL AND LL.DORSAL = P.DORSAL AND P.NETAPA = LL.NETAPA GROUP BY C.NOMBRE;

6.

Obtener el nombre de los ciclistas que no ha ganado ningn puerto. select nombre from ciclista where dorsal not in(select dorsal from puerto);

7. Obtener el nombre y el director de los equipos a los que pertenezca algn ciclista mayor de 33 aos.
SELECT E.NOMEQ AS EQUIPO, E.DESCRIPCION AS "DIRECTOR" FROM CICLISTA C, EQUIPO E WHERE E.NOMEQ = C.NOMEQ AND C.EDAD > 33;

8.

Nombre de los ciclistas que pertenezcan a Kelme.


SELECT C.NOMBRE AS CICLISTA FROM CICLISTA C, EQUIPO E WHERE E.NOMEQ = C.NOMEQ AND E.NOMEQ like 'Ke lme' ;

9.

Nombre de los ciclistas que haya ganado ms de una etapa.


select nombre,COUNT(*) from ciclista,etapa where ciclista.dorsal=etapa.dorsal group by nombre having count(*)>1;

10. Nombre de los ciclistas que no hayan ganado ningn puerto de montaa.

select nombre from ciclista where dorsal not in(select dorsal from puerto);

11. Nombre de los ciclistas que hayan ganado ms de un puerto de montaa.


SELECT DISTINCT C.NOMBRE FROM CICLISTA C, EQUIPO E, ETAPA ET, PUERTO P, LLEVAR LL, MAILLOT M WHERE C.DORSAL = P.DORSAL AND P.DORSAL = ET.DORSAL AND M.CODIGO = LL.CODIGO AND P.NETAPA = LL.NETAPA AND M.TIPO LIKE 'montaa';

12. Qu ciclistas han llevado el mismo maillot que Miguel Indurain?


SELECT C.NOMBRE FROM CICLISTA C, EQUIPO E, ETAPA ET, PUERTO P, LLEVAR LL, MAILLOT M WHERE C.DORSAL = P.DORSAL AND P.DORSAL = ET.DORSAL AND M.CODIGO = LL.CODIGO AND M.CODIGO = (SELECT M.CODIGO FROM CICLISTA C, LLEVAR L, MAILLOT M WHERE C.DORSAL = L.DORSAL AND C.NOMBRE LIKE 'miguel%indur%');

13. De cada equipo obtener la edad media, la mxima edad y la mnima edad.
SELECT E.NOMEQ AS EQUIPO, AVG(C.EDAD), MIN(C.EDAD), MAX(C.EDAD) FROM CICLISTA C, EQUIPO E WHERE E.NOMEQ = C.NOMEQ GROUP BY E.NOMEQ;

14.

Nombre de aquellos ciclistas que tengan una edad entre 25 y 30 aos y que pertenezcan a los equipos Kelme y Banesto.
SELECT E.NOMEQ AS EQUIPO, E.NOMEQ AS EQUIPO FROM CICLISTA C, EQUIPO E WHERE E.NOMEQ IN ('Ke lme' ,'Banesto ' ) AND (C.EDAD BETWEEN 25 AND 30);

15. Nombre de los ciclistas que han ganado la etapa que comienza en Zamora.
SELECT C.NOMBRE FROM CICLISTA C, ETAPA ET WHERE C.DORSAL = ET.DORSAL AND ET.SALIDA LIKE 'Zamora%';

16. Obtn el nombre y la categora de los puertos ganados por ciclistas del equipo Banesto. select nompuerto,categoria from puerto where dorsal in (select dorsal from ciclista where nomeq='Banesto'); 17. Obtener el nombre de cada puerto indicando el nmero (netapa) y los kilmetros de la etapa en la que se encuentra el puerto. SELECT P.NOMPUERTO,P.NETAPA,E.KM E.NETAPA=P.NETAPA; FROM PUERTO P,ETAPA E WHERE

18. Obtener el nombre de los ciclistas con el color de cada maillot que hayan llevado.
select nombre,maillot.codigo,maillot.color from ciclista,maillot,llevar where ciclista.dorsal=llevar.dorsal and maillot.codigo=llevar.codigo;

19. 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 from ciclista,maillot,llevar where ciclista.dorsal=llevar.dorsal color='Amarillo'; OTRA RESPUESTA

and

maillot.codigo=llevar.codigo

and

Select distinct nombre,netapa,color from ciclista inner join etapa using(dorsal) inner join llevar using(dorsal) inner join maillot using (codigo)where maillot.color like amarill%;
20. 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;

21.

Obtener el valor del atributo netapa y la ciudad de salida de aquellas etapas que no tengan puertos de montaa.
SELECT e. netapa ,E.SALIDA,E.LLEGADA FROM ETAPA E,PUERTO P WHERE E.NETAPA=P.NETAPA AND P.netapa not in (SELECT DISTINCT P.NETAPA FROM CICLISTA C, EQUIPO E, ETAPA ET, PUERTO P, LLEVAR LL, MAILLOT M WHERE C.DORSAL = P.DORSAL AND P.DORSAL = ET.DORSAL AND M.CODIGO = LL.CODIGO AND P.NETAPA = LL.NETAPA AND M.TIPO NOT LIKE 'montaa' );

22. Obtener la edad media de los ciclistas que han ganado alguna etapa. select avg(edad) from ciclista where dorsal in (select dorsal from etapa); 23. 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); 24. 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)); 25. 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 altura=(select max(altura) from puerto);

26. Obtener el nombre del ciclista ms joven que ha ganado al menos una etapa. select nombre from ciclista where edad=(select min(edad) from ciclista,etapa where ciclista.dorsal=etapa.dorsal); 27. 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 etapa.netapa=puerto.netapa and puerto.altura>700 and not exists (select * from puerto p2 where p2.netapa=etapa.netapa and p2.altura<700); 28. Obtener el nombre y el director de los equipos tales que todos sus ciclistas son mayores de 20 aos.

select equipo.nomeq,equipo.descripcion from equipo where not exists (select * from ciclista where equipo.nomeq=ciclista.nomeq and ciclista.edad<20);

29. 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,ciclista.nombre from ciclista,etapa e1 where ciclista.dorsal=e1.dorsal and not exists (select * from etapa where ciclista.dorsal=etapa.dorsal and etapa.km<170); 30. Obtener el nombre de los ciclistas que han ganado todos los puertos de una etapa y adems han ganado esa misma etapa. Select ciclista.nombre, ciclista.dorsal From ciclista, etapa, puerto Where ciclista.dorsal=etapa.dorsal and etapa.netapa=puerto.netapa and not exists (select * from puerto p1 where ciclista.dorsal<>p1.dorsal and etapa.netapa=p1.netapa); 31. Obtener el nombre de los equipos tales que todos sus corredores han llevado algn maillot o han ganado algn puerto. Select distinct equipo.nomeq From equipo, ciclista c1 Where equipo.nomeq=c1.nomeq And exists (select * From ciclista c2, puerto, llevar Where c1.dorsal=c2. dorsal and (c2.dorsal=llevar.dorsal or c2.dorsal=puerto.dorsal)) Having count (*)=(select count (*) From ciclista c3 Where equipo.nomeq=c3. nomeq Group by c3.nomeq) Group by equipo.nomeq; 32. Obtener el cdigo y el color de aquellos maillots que slo han sido llevados por ciclistas de un mismo equipo. 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); 33. Obtener el nombre de aquellos equipos tal que sus ciclistas slo hayan ganado puertos de 1 categora.
SELECT C.NOMBRE, COUNT(P .NOMPUERTO) FROM CICLISTA C,PUERTO P WHERE C.DORSAL=P.DORSAL HAVING COUNT(P.NOMPUERTO)>1 GROUP BY C.NOMBRE;

34.

Obtener el valor del atributo netapa de aquellas etapas que tienen puertos de montaa indicando cuntos tiene.
SELECT e. netapa,COUNT(*) FROM ETAPA E,PUERTO P WHERE E.NETAPA=P.NETAPA AND P.netapa not in (SELECT DISTINCT P.NETAPA FROM CICLISTA C, EQUIPO E, ETAPA ET, PUERTO P, LLEVAR LL, MAILLOT M WHERE C.DORSAL = P.DORSAL AND P.DORSAL = ET.DORSAL AND M.CODIGO = LL.CODIGO AND P.NETAPA = LL.NETAPA AND M.TIPO NOT LIKE 'montaa' ) GROUP BY e. netapa;

35. Obtener el nombre de todos los equipos indicando cuntos ciclistas tiene cada uno. select nomeq,count(*) from ciclista group by nomeq;

36.

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. NO EXISTE DIRECTOR select equipo.nomeq,equipo.descripcion from equipo,ciclista where equipo.nomeq=ciclista.nomeq group by equipo.nomeq having count(*)>3 and avg(edad)>30; 37. 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 ciclista.nombre, count(*) From ciclista, equipo, etapa Where ciclista.nomeq=equipo.nomeq and ciclista.dorsal=etapa.dorsal And equipo.nomeq in (select c.nomeq From ciclista c Having count(*)>5 Group by nomeq) Group by ciclista.nombre ; 38. 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. Select nomeq, avg(ciclista.edad) From ciclista Having avg(edad ) = (select max(avg(edad) ) From ciclista c Group by c.nomeq)

Group by nomeq;

39.

Obtener el director de los equipos cuyos ciclistas han llevado ms das maillots de cualquier tipo.

Select e.descripcion, 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.descripcion, c.nomeq;

40. Obtener el cdigo y el color del maillot que ha sido llevado por algn ciclista que no ha ganado ninguna etapa.
SELECT L.CODIGO, COLOR FROM LLEVAR L JOIN MAILLOT M ON M.CODIGO = L.CODIGO WHERE L.CODIGO IN (SELECT NOMEQ FROM ETAPA E JOIN CICLISTA C ON C.DORSAL = E.DORSAL WHERE E.DORSAL IS NULL);

41. 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 NETAPA,SALIDA,LLEGADA FROM ETAPA WHERE NETAPA IN(SELECT NETAPA FROM ETAPA WHERE ETAPA.KM>190) AND EXISTS (SELECT NETAPA,COUNT(*) FROM HAVING COUNT(NETAPA)>=2);

PUERTO

42. 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 L.DORSAL, NOMBRE FROM LLEVAR L JOIN CICLISTA C ON C.DORSAL = L.DORSAL WHERE CODIGO IN(SELECT L.CODIGO FROM LLEVAR L JOIN CICLISTA C ON C.DORSAL = L.DORSAL WHERE C.DORSAL=2) GROUP BY L.DORSAL, NOMBRE HAVING COUNT(CODIGO)>=1;

43. Obtener el dorsal y nombre de los ciclistas que han llevado exactamente los mismos maillots que ha llevado el ciclista de dorsal 1.

44. 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.
SELECT DISTINCT L.DORSAL,COLOR,NOMBRE JOIN CICLISTA C ON C.DORSAL = L.DORSAL JOIN ETAPA E ON E.NETAPA = L.NETAPA FROM LLEVAR L

SELECT DISTINCT L.DORSAL, NOMBRE FROM LLEVAR L JOIN CICLISTA C ON C.DORSAL = L.DORSAL WHERE CODIGO IN(SELECT L.CODIGO FROM LLEVAR L JOIN CICLISTA C ON C.DORSAL = L.DORSAL) AND CODIGO IN(SELECT L.CODIGO FROM LLEVAR L JOIN CICLISTA C ON C.DORSAL = L.DORSAL WHERE C.DORSAL=1);

JOIN MAILLOT M ON M.CODIGO = L.CODIGO WHERE KM = (SELECT MAX(KM) FROM ETAPA) AND CODIGO IN(SELECT L.CODIGO FROM LLEVAR L JOIN CICLISTA C ON C.DORSAL = L.DORSAL) ;

45. Obtener el valor del atributo netapa y los km de las etapas que tienen puertos de montaa.

SELECT e. netapa,e.km FROM ETAPA E,PUERTO P WHERE E.NETAPA=P.NETAPA AND P.netapa not in (SELECT DISTINCT P.NETAPA FROM CICLISTA C, EQUIPO E, ETAPA ET, PUERTO P, LLEVAR LL, MAILLOT M WHERE C.DORSAL = P.DORSAL AND P.DORSAL = ET.DORSAL AND M.CODIGO = LL.CODIGO AND P.NETAPA = LL.NETAPA AND M.TIPO NOT LIKE 'montaa' ) ;

Das könnte Ihnen auch gefallen