You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
114 lines
2.6 KiB
114 lines
2.6 KiB
-- 1
|
|
SELECT * FROM aeroport WHERE pays = 'France' ORDER BY ville;
|
|
|
|
-- 2
|
|
SELECT v.* FROM vol v
|
|
INNER JOIN avion a ON a.immat = v.avion
|
|
WHERE v.compagnie != a.compagnie;
|
|
|
|
-- 3
|
|
SELECT DISTINCT a.nom, a.ville, a.pays
|
|
FROM vol v
|
|
INNER JOIN aeroport a ON v.aeroportArr = a.code
|
|
WHERE v.aeroportDep = (
|
|
SELECT code FROM aeroport WHERE ville = 'Clermont-Ferrand'
|
|
);
|
|
|
|
-- 4
|
|
SELECT MAX(m.nbPassagers) FROM avion a
|
|
INNER JOIN modele m ON m.code = a.modele
|
|
WHERE a.compagnie = (
|
|
SELECT numero FROM compagnie WHERE nom = 'Air France'
|
|
);
|
|
|
|
-- 5
|
|
SELECT m.nom, m.marque, a.matricule, MAX(a.dateMiseService)
|
|
FROM avion a
|
|
INNER JOIN modele m ON m.code = a.modele
|
|
GROUP BY a.modele;
|
|
|
|
-- 6
|
|
SELECT a.* FROM vol v
|
|
INNER JOIN avion a ON a.immat = v.avion
|
|
WHERE v.aeroportDep = 'CDG'
|
|
AND v.aeroportDep = 'JFK'
|
|
ORDER BY a.dateMiseService
|
|
LIMIT 1;
|
|
|
|
-- 7 (ou jointure)
|
|
SELECT a.*, (
|
|
SELECT COUNT(*) FROM vol WHERE aeroportDep = a.code OR aeroportArr = a.code
|
|
) nbVols
|
|
FROM aeroport a
|
|
ORDER BY a.nbVols DESC;
|
|
|
|
-- 8
|
|
SELECT a.*, COUNT(*)
|
|
FROM vol v
|
|
INNER JOIN avion a ON a.immat = v.numero
|
|
GROUP BY a.immat
|
|
HAVING COUNT(*) >= 20;
|
|
|
|
-- 9
|
|
SELECT a.compagnie
|
|
FROM avion a
|
|
INNER JOIN modele m ON m.code = a.modele
|
|
GROUP BY a.compagnie
|
|
HAVING COUNT(DISTINCT m.marque) = (
|
|
SELECT COUNT(DISTINCT m.marque) FROM modele
|
|
);
|
|
|
|
-- 10
|
|
SELECT compagnie
|
|
FROM avion
|
|
GROUP BY compagnie
|
|
HAVING COUNT(*) >= ALL (
|
|
SELECT COUNT(*) c
|
|
FROM avion
|
|
ORDER BY c DESC
|
|
);
|
|
|
|
-- 11
|
|
SELECT a.nom
|
|
FROM vol v
|
|
INNER JOIN aeroport a ON a.code = v.aeroportDep
|
|
WHERE a.pays = 'France'
|
|
GROUP BY a.code
|
|
HAVING COUNT(*) FILTER (WHERE v.compagnie = (
|
|
SELECT numero FROM compagnie WHERE nom = 'Air France'
|
|
)) >= (COUNT(*) * 3) / 4
|
|
);
|
|
|
|
-- 12
|
|
SELECT m.nom, ROUND((COUNT(*) * 100) / (
|
|
SELECT COUNT(*) FROM avion
|
|
WHERE compagnie = (SELECT numero FROM compagnie = 'Air France')
|
|
), 2) pourcentage
|
|
FROM avion a
|
|
INNER JOIN modele m ON m.code = a.modele
|
|
GROUP BY a.modele;
|
|
|
|
-- 13
|
|
DELETE vol v
|
|
USING avion a
|
|
WHERE v.avion = a.immat AND v.aeroportDep > (a.dateMiseService + 10000);
|
|
|
|
SELECT *
|
|
FROM vol v
|
|
INNER JOIN aeroport depart ON depart.code = v.aeroportDep
|
|
INNER JOIN aeroport arrive ON arrive.code = v.aeroportArr
|
|
INNER JOIN avion a ON a.immat = v.avion
|
|
INNER JOIN modele m ON m.code = a.modele
|
|
WHERE depart.pays IN ('France', 'USA') AND arrive.pays IN ('France', 'USA')
|
|
AND ((depart.pays = 'France' AND depart.ville LIKE 'C%')
|
|
OR (depart.pays = 'USA' AND arrive.ville LIKE 'L%'))
|
|
AND ((arrive.pays = 'France' AND arrive.ville LIKE 'C%')
|
|
OR (arrive.pays = 'USA' AND arrive.ville LIKE 'L%'))
|
|
AND m.nbPassagers % 3 = 0
|
|
AND a.compagnie != v.compagnie
|
|
AND (
|
|
SELECT COUNT(*) FROM vol
|
|
INNER JOIN co
|
|
)
|
|
|