forked from Jaffar-Hussein/Les-Caserne-de-Pompiers
-
Notifications
You must be signed in to change notification settings - Fork 0
/
reqsupJourdain-Gura-Faye.sql
110 lines (94 loc) · 2.91 KB
/
reqsupJourdain-Gura-Faye.sql
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
/* 1.Query */
/* Quelles caserne protège le plus de ville ? */
SELECT id_caserne, COUNT(nom_ville) AS nbre_ville_protege
FROM protege
GROUP BY 1
ORDER BY 2 DESC;
/* 1.Result */
/*
id_caserne | nbre_ville_protege
------------+--------------------
10 | 3
5 | 3
3 | 2
9 | 2
7 | 1
1 | 1
8 | 1
4 | 1
6 | 1
2 | 1
(10 rows)
*/
/* 2.Query */
-- Select the nom and prenom of the pompiers who have vowels as both their first and last character
SELECT DISTINCT prenom,nom
FROM pompier
WHERE prenom SIMILAR TO '(A|E|I|O|U)%(a|e|i|o|u)';
-- prenom | nom
-- --------+----------
-- Annie | Gaie
-- Emma | Augustin
-- (2 rows)
/* 3.Query */
/* Quelle est le modèle de camion le plus répandu de manière général au sein des casernes ? */
SELECT modele, COUNT(modele) as nbre_camion
FROM camion
GROUP BY 1
ORDER BY 2 DESC
LIMIT 1;
/* 3.Result */
/*
modele | nbre_camion
-----------+-------------
Curiosity | 3
(1 row)
*/
/* 4.Query */
/* Combien de camions ont été fournis par le fabricant avec le plus haut délai de livraison moyen ? */
SELECT COUNT(id_camion) as nbre_camion
FROM camion
WHERE modele IN (SELECT nom_modele
FROM modele
WHERE nom_fabricant = (SELECT nom_fabricant
FROM fabricant
WHERE delai = (SELECT MAX(delai)
FROM fabricant)));
SELECT COUNT(id_camion) as nbre_camion
FROM camion
INNER JOIN modele
ON camion.modele = modele.nom_modele
WHERE modele.nom_fabricant IN (SELECT nom_fabricant
FROM fabricant
WHERE delai = (SELECT MAX(delai)
FROM fabricant));
/* 4.Result */
/*
nbre_camion
-------------
2
(1 row)
*/
/* 5.Query */
/* Quelle caserne manque de conducteur de camion ? (Un camion = un conducteur, on considère que tous les camions de la flotte doivent présenter un conducteur) */
WITH
vehicule AS (SELECT id_caserne, COUNT(id_camion) AS nbre_camion
FROM camion
GROUP BY 1),
conducteur AS (SELECT id_caserne, COUNT(id_pompier) AS nbre_pompier
FROM pompier
GROUP BY 1)
SELECT vehicule.id_caserne, vehicule.nbre_camion, conducteur.nbre_pompier
FROM vehicule
FULL OUTER JOIN conducteur
ON vehicule.id_caserne = conducteur.id_caserne
WHERE (vehicule.nbre_camion > conducteur.nbre_pompier) AND vehicule.nbre_camion IS NOT NULL;
/* 5.Result */
/*
id_caserne | nbre_camion | nbre_pompier
------------+-------------+--------------
5 | 3 | 1
2 | 2 | 1
1 | 2 | 1
(3 rows)
*/