2023-01-05 15:50:41 +01:00
|
|
|
|
--1 Obtenir la liste des 10 villes les plus peuplées en 2012
|
|
|
|
|
|
|
|
|
|
SELECT
|
|
|
|
|
ville_slug
|
|
|
|
|
FROM
|
|
|
|
|
villes
|
|
|
|
|
ORDER BY
|
|
|
|
|
ville_population_2012 DESC
|
|
|
|
|
LIMIT
|
|
|
|
|
10
|
|
|
|
|
;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
--2 Obtenir la liste des 50 villes ayant la plus faible superficie
|
|
|
|
|
SELECT
|
|
|
|
|
ville_slug,
|
|
|
|
|
ville_surface
|
|
|
|
|
FROM
|
|
|
|
|
villes
|
|
|
|
|
ORDER BY
|
|
|
|
|
ville_surface ASC
|
|
|
|
|
LIMIT
|
|
|
|
|
50
|
|
|
|
|
;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
--3 Obtenir la liste des départements d’outres-mer, c’est-à-dire ceux dont le numéro de département commencent par “97”
|
|
|
|
|
SELECT
|
|
|
|
|
departement_nom
|
|
|
|
|
FROM
|
|
|
|
|
departements
|
|
|
|
|
WHERE
|
|
|
|
|
departement_code
|
|
|
|
|
LIKE
|
|
|
|
|
'97%'
|
|
|
|
|
;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
--4 Obtenir le nom des 10 villes les plus peuplées en 2012, ainsi que le nom du département associé
|
|
|
|
|
SELECT
|
|
|
|
|
ville_slug,
|
|
|
|
|
departement_nom
|
|
|
|
|
FROM
|
|
|
|
|
villes V
|
|
|
|
|
JOIN
|
2023-01-09 15:32:48 +01:00
|
|
|
|
departements D ON V.departement_id = D.departement_id
|
2023-01-05 15:50:41 +01:00
|
|
|
|
ORDER BY
|
|
|
|
|
ville_population_2012 DESC
|
|
|
|
|
LIMIT
|
|
|
|
|
10
|
|
|
|
|
;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
--5 Obtenir la liste du nom de chaque département, associé à son code et du nombre de commune au sein de ces département, en triant afin d’obtenir en priorité les départements qui possèdent le plus de communes
|
|
|
|
|
SELECT
|
|
|
|
|
D.departement_id,
|
|
|
|
|
D.departement_nom,
|
|
|
|
|
D.departement_code,
|
|
|
|
|
COUNT(*) AS nombre_commune
|
|
|
|
|
FROM
|
|
|
|
|
villes V
|
|
|
|
|
JOIN
|
2023-01-09 15:32:48 +01:00
|
|
|
|
departements D ON V.departement_id = D.departement_id
|
2023-01-05 15:50:41 +01:00
|
|
|
|
GROUP BY
|
|
|
|
|
D.departement_id
|
|
|
|
|
ORDER BY
|
|
|
|
|
nombre_commune DESC
|
|
|
|
|
;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
--6 Obtenir la liste des 10 plus grands départements, en terme de superficie
|
|
|
|
|
SELECT
|
|
|
|
|
D.departement_id,
|
|
|
|
|
D.departement_nom,
|
|
|
|
|
SUM(ville_surface) AS supperficie
|
|
|
|
|
FROM
|
|
|
|
|
villes V
|
|
|
|
|
JOIN
|
2023-01-09 15:32:48 +01:00
|
|
|
|
departements D ON V.departement_id = D.departement_id
|
2023-01-05 15:50:41 +01:00
|
|
|
|
GROUP BY
|
|
|
|
|
D.departement_id
|
|
|
|
|
ORDER BY
|
|
|
|
|
supperficie DESC
|
|
|
|
|
LIMIT 10;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
--7 Compter le nombre de villes dont le nom commence par “Saint”
|
|
|
|
|
SELECT
|
|
|
|
|
COUNT(*) AS nombre_villes_debut_par_saint
|
|
|
|
|
FROM
|
|
|
|
|
villes V
|
|
|
|
|
WHERE
|
|
|
|
|
V.ville_nom_reel
|
|
|
|
|
LIKE
|
|
|
|
|
'Saint%'
|
|
|
|
|
;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
--8 Obtenir la liste des villes qui ont un nom existants plusieurs fois, et trier afin d’obtenir en premier celles dont le nom est le plus souvent utilisé par plusieurs communes
|
|
|
|
|
SELECT
|
|
|
|
|
V.ville_nom,
|
|
|
|
|
COUNT(*) AS occurence
|
|
|
|
|
FROM
|
|
|
|
|
villes V
|
|
|
|
|
GROUP BY
|
|
|
|
|
V.ville_nom
|
|
|
|
|
HAVING
|
|
|
|
|
COUNT(*) > 1
|
|
|
|
|
ORDER BY
|
|
|
|
|
occurence DESC
|
|
|
|
|
;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
--9 Obtenir en une seule requête SQL la liste des villes dont la superficie est supérieur à la superficie moyenne (17.25737493077501)
|
|
|
|
|
SELECT
|
|
|
|
|
V.ville_id,
|
|
|
|
|
V.ville_nom,
|
|
|
|
|
V.ville_surface
|
|
|
|
|
FROM
|
|
|
|
|
villes V
|
|
|
|
|
WHERE
|
|
|
|
|
V.ville_surface > (
|
|
|
|
|
SELECT
|
|
|
|
|
AVG(ville_surface)
|
|
|
|
|
FROM
|
|
|
|
|
villes
|
|
|
|
|
)
|
|
|
|
|
ORDER BY
|
|
|
|
|
V.ville_nom ASC
|
|
|
|
|
;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
--10 Obtenir la liste des départements qui possèdent plus de 2 millions d’habitants
|
|
|
|
|
SELECT
|
|
|
|
|
D.departement_nom,
|
|
|
|
|
SUM(ville_population_2012) AS la_population
|
|
|
|
|
FROM
|
|
|
|
|
departements D
|
|
|
|
|
JOIN
|
2023-01-09 15:32:48 +01:00
|
|
|
|
villes V ON V.departement_id = D.departement_id
|
2023-01-05 15:50:41 +01:00
|
|
|
|
GROUP BY
|
|
|
|
|
D.departement_nom
|
|
|
|
|
HAVING
|
|
|
|
|
SUM(ville_population_2012) > 2000000
|
|
|
|
|
;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
--11 Remplacez les tirets par un espace vide, pour toutes les villes commençant par “SAINT-” (dans la colonne qui contient les noms en majuscule)
|
|
|
|
|
SELECT
|
|
|
|
|
V.departement_id,
|
|
|
|
|
REPLACE(V.ville_nom, '-', ' ')
|
|
|
|
|
FROM
|
|
|
|
|
villes V
|
|
|
|
|
WHERE
|
|
|
|
|
V.ville_nom
|
|
|
|
|
LIKE
|
|
|
|
|
'SAINT-%'
|
|
|
|
|
ORDER BY
|
|
|
|
|
V.ville_nom ASC
|
2023-01-19 09:11:42 +01:00
|
|
|
|
;
|
|
|
|
|
|
|
|
|
|
--Procedure
|
|
|
|
|
|
|
|
|
|
DELIMITER //
|
|
|
|
|
CREATE PROCEDURE replace_all_dashes_by_spaces_for_villes_saint ()
|
|
|
|
|
BEGIN
|
|
|
|
|
UPDATE villes V
|
|
|
|
|
SET V.ville_nom = REPLACE(V.ville_nom, '-', ' ')
|
|
|
|
|
WHERE
|
|
|
|
|
V.ville_nom
|
|
|
|
|
LIKE
|
|
|
|
|
'SAINT-%'
|
|
|
|
|
;
|
|
|
|
|
END //
|
|
|
|
|
DELIMITER ;
|
|
|
|
|
|
|
|
|
|
--Trigger
|
|
|
|
|
CREATE TRIGGER trigger_name
|
|
|
|
|
{BEFORE | AFTER} {INSERT | UPDATE| DELETE }
|
|
|
|
|
ON table_name FOR EACH ROW
|
|
|
|
|
trigger_body;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|