Você está na página 1de 6

Andr Restivo

Home > Aulas > Exercicios > Sql > Avioes > Perguntas

SQL Avies - Perguntas


Explicao do Modelo
voos
(vo: um avio parte de um aeroporto e chega a outro aeroporto)
codvoo
Chave Primria
#decodaerop Aeroporto de partida (de_codigo_aeroporto)
#paracodaerop Aeroporto de chegada (para_codigo_aeroporto)
transportadora Companhia area que responsvel pelo transporte
duracao
Durao do voo em horas
#codaviao
Avio utilizado
aeroportos (caractersticas dos aeroportos)
codaerop Chave Primria
nome
Nome do aeroporto
local
Cidade
pais
Pas
modelos (caractersticas dos modelos de avies)
codmodelo Chave Primria
construtor Construtor deste modelo de avio
versao
Variante do modelo
nummotores Quantos motores tem este modelo de avio
avioes (caractersticas dos avies)
codaviao
Chave Primria
nome
Nome de baptismo do avio
#codmodelo Modelo do avio

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

(cd_voo1,cd_voo2, cdigo_aeroporto_da_escala). Sugesto: Utilize os


cdigos dos aeroportos (1 e 12) na pesquisa.
8. Quantos aeroportos h por pas ordene a resposta por ordem decrescente (pas,
contagem)?
9. Liste ordenadamente todos os vos, respectivo local de origem e local de
destino, ordenando pelo cdigo de vo crescente (codvoo, de_local, para_local).
Apresente as colunas como Cdigo do Voo , Origem e Destino.
10. Liste os cdigos dos voos de Porto para Lisboa (codvoo) ? Ateno: A pesquisa
no se pode basear nos actuais cdigos de aeroportos, ie. deve funcionar mesmo
se os cdigos de aeroportos mudarem.
11. Conte o nmero de aeroportos por pas (pas, contagem); mostre apenas os
pases com mais de 2 aeroportos.
12. Qual o pas, ou pases, com mais aeroportos e com quantos aeroportos ? (pas,
contagem)
13. Liste para cada voo, qual o nome do aeroporto de partida e de chegada
(cod_voo, nome_aerop_part, nome_aerop_cheg); ordene a resposta
alfabeticamente pelo nome do aeroporto de partida e depois pelo nome do
aeroporto de chegada.
14. Liste para cada modelo, quantos avies realmente existem. Ordene a listagem tal
forma que os modelos mais frequentes apaream em ltimo lugar (construtor,
verso, contagem). Omita da listagem avies com contagem nula.
15. Liste para cada modelo, quantos avies realmente existem. Ordene a listagem tal
forma que os modelos mais frequentes apaream em ltimo lugar (construtor,
verso, contagem). Inclua na listagem avies com contagem nula.
Copyright 2011 Andr Restivo. Powered by FisyWiki.
SCRIPT

CREATE TABLE "aeroportos" (


codaerop integer PRIMARY KEY,
nome character varying(30),
LOCAL character varying(30),
pais character varying(30)
);
CREATE TABLE "modelos" (
"codmodelo" integer PRIMARY KEY,
"construtor" character varying(20),
"versao" character varying(20),
"nummotores" character varying(20)
);
CREATE TABLE "avioes" (
"codaviao" integer PRIMARY KEY,
"nome" character varying(30),
"codmodelo" integer REFERENCES modelos
);
CREATE TABLE "voos" (
"codvoo" integer PRIMARY KEY,
"decodaerop" integer REFERENCES aeroportos,
"paracodaerop" integer REFERENCES aeroportos,
"transportadora" character varying(10),
"duracao" integer,
"codaviao" integer REFERENCES avioes

);
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

Exerccio SQL - Avies - Soluo


1)
SELECT LOCAL, nome
FROM aeroportos
WHERE pais = 'Portugal';

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

FROM voos JOIN aeroportos AS origem ON (decodaerop = origem.codaerop)


JOIN aeroportos AS destino ON (paracodaerop = destino.codaerop)
WHERE origem.LOCAL = 'Porto' AND destino.LOCAL = 'Lisboa'

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)

SELECT construtor, versao, COUNT(*)


FROM modelos JOIN avioes USING (codmodelo)
GROUP BY construtor, versao
ORDER BY COUNT(*)

15)
SELECT construtor, versao, COUNT(nome)
FROM modelos LEFT JOIN avioes USING (codmodelo)
GROUP BY construtor, versao
ORDER BY COUNT(nome)

Copyright 2011 Andr Restivo. Powered by FisyWiki.


Ads not by this site