2023-01-19 09:11:42 +01:00

187 lines
3.5 KiB
SQL
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

--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 doutres-mer, cest-à-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
departements D ON V.departement_id = D.departement_id
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 dobtenir 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
departements D ON V.departement_id = D.departement_id
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
departements D ON V.departement_id = D.departement_id
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 dobtenir 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 dhabitants
SELECT
D.departement_nom,
SUM(ville_population_2012) AS la_population
FROM
departements D
JOIN
villes V ON V.departement_id = D.departement_id
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
;
--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;