SOLUCIONES PRÁCTICA 16.
CONSULTAS MÁS COMPLEJAS EN SQL (IV)
1. select codigo,tipo,color,premio
from maillot;
2. select dorsal
from ciclista where edad<=25;
3. select nompuerto,altura
from puerto where categoria='E';
4. select netapa
from etapa
where salida=llegada;
5. select count(*)
from ciclista;
6. select count(*)
from ciclista where edad>25;
7. select count(*) from equipo;
8. select avg(edad) from ciclista:
9. select max(altura),min(altura)
from puerto;
10. select nombre,nomeq
from ciclista;
11. select nombre
from ciclista
where nomeq='Banesto';
12. select count(*)
from ciclista
where nomeq='Amore Vita';
13. select avg(edad)
from ciclista
where nomeq='TVM';
14. select nombre
from ciclista
where nomeq=(select nomeq from ciclista where nombre='Miguel Indurain');
15. select nombre
from ciclista,etapa
where ciclista.dorsal=etapa.dorsal;
16. select nombre
from ciclista,llevar,maillot
where ciclista.dorsal=llevar.dorsal and llevar.codigo=maillot.codigo and tipo='General';
17. select nombre
from ciclista
where edad in (select min(edad) from ciclista);
18. select nomeq,count(*)
from ciclista
group by nomeq;
19. select nomeq,count(*)
from ciclista
group by nomeq
having count(*)>5;
20. select nombre,count(*)
from ciclista,puerto
where ciclista.dorsal=puerto.dorsal
group by nombre;
21. select nombre,count(*)
from ciclista,puerto
where ciclista.dorsal=puerto.dorsal
group by nombre
having count(*)>1;
22 select equipo.nomeq,descripcion
from equipo,ciclista
where equipo.nomeq=ciclista.nomeq and edad>33;
23 select nombre
from ciclista
where nomeq not in('Kelme');
24 select nombre
from ciclista
where dorsal not in(select dorsal from etapa);
25 select nombre
from ciclista
where dorsal not in(select dorsal from puerto);
26 select nombre,count(*)
from puerto,ciclista
where ciclista.dorsal=puerto.dorsal
group by nombre
having count(*)>1;
27
select nombre
from ciclista,maillot,llevar
where ciclista.dorsal=llevar.dorsal and llevar.codigo=maillot.codigo and maillot.codigo
in(select maillot.codigo
from ciclista,maillot,llevar
where ciclista.dorsal=llevar.dorsal and llevar.codigo=maillot.codigo and nombre='Miguel
Indurain');
28
select nomeq,avg(edad),max(edad),min(edad)
from ciclista
group by nomeq;
29 select *
from ciclista
where edad between 25 and 30 and nomeq not in('Kelme','Banesto');
30 select nombre
from ciclista,etapa
where ciclista.dorsal=etapa.dorsal and salida='Zamora';
31 select nompuerto,categoria
from puerto
where dorsal in (select dorsal from ciclista where nomeq='Banesto');
32 select nompuerto,puerto.netapa,km
from puerto,etapa
where puerto.netapa=etapa.netapa;
33 select nombre,maillot.codigo
from ciclista,maillot,llevar
where ciclista.dorsal=llevar.dorsal and maillot.codigo=llevar.codigo;
34 select nombre
from ciclista,maillot,llevar
where ciclista.dorsal=llevar.dorsal and maillot.codigo=llevar.codigo and color='Amarillo';
35 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 select netapa
from etapa
where netapa not in (select netapa from puerto);
37 select avg(edad)
from ciclista
where dorsal in (select dorsal from etapa);
38 select nompuerto
from puerto
where altura>(select avg(altura) from puerto);
39
select salida,llegada
from etapa
where netapa in(
select netapa
from puerto
where pendiente=(select max(pendiente) from puerto));
40
select ciclista.dorsal,nombre
from ciclista,puerto
where ciclista.dorsal=puerto.dorsal and altura=(select max(altura) from puerto);
41 select nombre
from ciclista
where edad=(select min(edad) from ciclista,etapa
where ciclista.dorsal=etapa.dorsal);
42 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);
43 select equipo.nomeq,equipo.director
from equipo
where not exists (select * from ciclista
where equipo.nomeq=ciclista.nomeq and ciclista.edad<20);
44 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);
45 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);
46 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;
47
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 Select distinct equipo.nomeq
From equipo, ciclista, puerto
Where equipo.nomeq=ciclista.nomeq and ciclista.dorsal=puerto.dorsal and
puerto.categoria=ʼ1ʼ
And not exists (select *
From puerto p, ciclista c
Where c.nomeq=ciclista.nomeq and c.dorsal <>ciclista.dorsal
and c.dorsal=p.dorsal and
p.categoria<>ʼ1ʼ);
49 select netapa,count(*)
from puerto
group by netapa;
50 select nomeq,count(*)
from ciclista
group by nomeq;
51 select equipo.nomeq,director
from equipo,ciclista
where equipo.nomeq=ciclista.nomeq
group by equipo.nomeq
having count(*)>3 and avg(edad)>30;
52 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 ;
53 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 Select e.descripción, 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.descripción, c.nomeq;