Home > Aulas > Exercicios > Sql > Avioes > Perguntas
Perguntas
1. Liste o local e o nome de todos os aeroportos de Portugal (local, nome).
2. Liste os nomes de todos os avies da verso DC-10 (nome).
3. Liste para cada avio, a quantidade de motores necessrios (nome_avio,
num_motores).
4. Quantos vos com a durao de 2 ou 3 horas h no sistema (contagem) ?
5. Liste todos os modelos de avio da srie A3xx , isto , em que a verso comea
pelo texto A3 (verso).
6. Liste os cdigos de todos os vos ordenados por durao, vos mais compridos
primeiro; para o caso de vos de igual durao, ordene crescentemente pelo
cdigo do vo (codvoo, durao).
7. Tendo em conta que no existe nenhum vo directo do aeroporto de cdigo 1
(Porto) para o aeroporto de cdigo 12 (Londres), liste todos as escalas possveis
);
INSERT INTO "aeroportos" VALUES (1,'Sa
Carneiro','Porto','Portugal');
INSERT INTO "aeroportos" VALUES (3,'Portela','Lisboa','Portugal');
INSERT INTO "aeroportos" VALUES (5,'Faro','Faro','Portugal');
INSERT INTO "aeroportos" VALUES (2,'Madeira','Funchal','Portugal');
INSERT INTO "aeroportos" VALUES (4,'Ponta Delgada','S.
Miguel','Portugal');
INSERT INTO "aeroportos" VALUES (9,'Orly','Paris','Franca');
INSERT INTO "aeroportos" VALUES (8,'Charles de
Gaule','Paris','Franca');
INSERT INTO "aeroportos" VALUES (11,'Heathrow','Londres','Reino
Unido');
INSERT INTO "aeroportos" VALUES (12,'Gatwick','Londres','Reino
Unido');
INSERT INTO "modelos" VALUES (1,'Douglas','DC-10','3');
INSERT INTO "modelos" VALUES (2,'Boing','737','2');
INSERT INTO "modelos" VALUES (3,'Boing','747','4');
INSERT INTO "modelos" VALUES (4,'Airbus','A300','2');
INSERT INTO "modelos" VALUES (5,'Airbus','A340','4');
INSERT INTO "avioes" VALUES (1,'Scott Adams',1);
INSERT INTO "avioes" VALUES (2,'Milo Manara',1);
INSERT INTO "avioes" VALUES (4,'Henki Bilal',3);
INSERT INTO "avioes" VALUES (5,'Gary Larson',4);
INSERT INTO "avioes" VALUES (6,'Bill Waterson',4);
INSERT INTO "avioes" VALUES (7,'J R R Tolkien',3);
INSERT INTO "avioes" VALUES (8,'Franquin',3);
INSERT INTO "avioes" VALUES (9,'Douglas Adams',1);
INSERT INTO "avioes" VALUES (3,'Serpieri',5);
INSERT INTO "voos" VALUES (1001,1,2,'TAP',2,1);
INSERT INTO "voos" VALUES (1002,2,3,'TAP',1,2);
INSERT INTO "voos" VALUES (1010,12,4,'BA',3,3);
INSERT INTO "voos" VALUES (1008,3,12,'Portugalia',3,4);
INSERT INTO "voos" VALUES (1007,5,1,'TAP',1,5);
INSERT INTO "voos" VALUES (1009,1,3,'Portugalia',1,2);
INSERT INTO "voos" VALUES (1005,9,2,'AirFrance',2,3);
INSERT INTO "voos" VALUES (1003,2,12,'BA',2,5);
INSERT INTO "voos" VALUES (1006,8,11,'BA',1,5);
INSERT INTO "voos" VALUES (1004,4,3,'SATA',3,6);
INSERT INTO "voos" VALUES (1111,1,3,'TAP',2,3);
SOLUES
Andr Restivo
Home > Aulas > Exercicios > Sql > Avioes > Solucao
2)
SELECT nome
FROM avioes
JOIN modelos USING(codmodelo)
WHERE versao = 'DC-10';
3)
SELECT nome, nummotores
FROM avioes JOIN modelos USING(codmodelo);
4)
SELECT COUNT(*)
FROM voos
WHERE duracao = 2 OR duracao = 3;
5)
SELECT versao
FROM modelos
WHERE versao LIKE 'A3%';
6)
SELECT codvoo, duracao
FROM voos
ORDER BY duracao DESC, codvoo
7)
SELECT voos1.codvoo, voos2.codvoo, voos1.paracodaerop
FROM voos AS voos1, voos AS voos2
WHERE voos1.decodaerop = 1 AND voos2.paracodaerop = 12 AND
voos1.paracodaerop = voos2.decodaerop
8)
SELECT pais, COUNT(*)
FROM aeroportos
GROUP BY pais
ORDER BY COUNT(*) DESC
9)
SELECT codvoo AS "Codigo do Voo", origem.LOCAL AS "Origem",
destino.LOCAL AS "Destino"
FROM voos JOIN aeroportos AS origem ON (decodaerop = origem.codaerop)
JOIN aeroportos AS destino ON (paracodaerop = destino.codaerop)
ORDER BY codvoo
10)
SELECT codvoo
11)
SELECT pais, COUNT(*)
FROM aeroportos
GROUP BY pais
HAVING COUNT(*) > 2
12)
SELECT pais, COUNT(*)
FROM aeroportos
GROUP BY pais
HAVING COUNT(*) IN (
SELECT COUNT(*)
FROM aeroportos
GROUP BY pais
ORDER BY COUNT(*) DESC
LIMIT 1
)
ou
SELECT pais, COUNT(*)
FROM aeroportos
GROUP BY pais
HAVING COUNT(*) IN (
SELECT MAX(cnt) FROM (
SELECT COUNT(*) AS cnt
FROM aeroportos
GROUP BY pais
) AS c
)
ou
SELECT pais, COUNT(*)
FROM aeroportos
GROUP BY pais
HAVING COUNT(*) >=ALL (
SELECT COUNT(*)
FROM aeroportos
GROUP BY pais
)
13)
SELECT codvoo, origem.LOCAL AS origem, destino.LOCAL AS destino
FROM voos JOIN aeroportos AS origem ON (decodaerop = origem.codaerop)
JOIN aeroportos AS destino ON (paracodaerop = destino.codaerop)
ORDER BY origem, destino
14)
15)
SELECT construtor, versao, COUNT(nome)
FROM modelos LEFT JOIN avioes USING (codmodelo)
GROUP BY construtor, versao
ORDER BY COUNT(nome)