CC 2 2023-11-24 16h30-18h45
L3 MIASHS/Ingémath
Année 2023-2024
Pour chaque question, proposer une requête écrite en algèbre relationnelle ou en SQL.
Dans le schéma world, lister les pays où les dix plus grandes villes ont chacune au moins 10 millions d’habitants.
SELECT
ci.countrycode
FROM
world.city ci
WHERE
ci.population_city > 10000000
GROUP BY
ci.countrycode
HAVING
COUNT(ci.id) >= 10 ;Dans le schéma world, pour chaque pays, donner les trois langues les plus parlées.
WITH R AS (
SELECT
cl.countrycode, cl.language,
RANK() OVER w AS rnk
FROM
world.countrylanguage cl
WINDOW
w AS (PARTITION BY cl.countrycode ORDER BY cl.percentage DESC)
)
SELECT
R.countrycode, R.language
FROM
R
WHERE
R.rnk <= 3 ;Dans le schéma world, lister les langues parlées sur tous les continents.
SELECT
language
FROM
country co
NATURAL JOIN
countrylanguage cl
GROUP BY
cl.language
HAVING COUNT(DISTINCT co.continent) = (
SELECT COUNT(DISTINCT c.continent) FROM country c
) ;Dans le schéma world, lister par région le nombre de langues officielles distinctes.
SELECT
co.region,
COUNT(DISTINCT cl.language) AS n
FROM
world.countrylanguage cl
NATURAL JOIN
world.country co
WHERE
cl.isofficial
GROUP BY
co.regionDans le schéma world, lister pour chaque forme de gouvernement, la population des villes des pays qui subissent cette forme de gouvernement.
SELECT
co.governmentform,
SUM(ci.population) AS pop
FROM
world.country co
JOIN
world.city ci USING (countrycode)
GROUP BY
co.governmentform ;Dans le schéma world, lister les pays où la capitale est la ville la plus peuplée.
WITH R AS (
SELECT
co.countrycode, co.name_country, ci. name, ci.id, ci.population,
1 (co.capital=ci.id) AS capitale,
2 RANK() OVER (PARTITION BY co.countrycode ORDER BY ci.population DESC) AS rnk
FROM
world.country co
JOIN
world.city ci USING (countrycode)
)
SELECT
R.name_country, R. name, R.population
FROM
R
WHERE
3 capitale AND rnk = 1
; - 1
- On note les villes qui sont capitales
- 2
- On range les villes d’un pays par population décroissante
- 3
- On ne garde que les capitales qui sont aussi les villes les plus peuplées du royaume
Dans le schéma world, lister les pays où \(90\%\) de la population parle une langue officielle (il peut y avoir plusieurs langues officielles, dont la somme des locuteurs et locutrices dépasse \(90\%\) de la population).
SELECT
cl.countrycode
FROM
world.countrylanguage cl
WHERE
cl.isofficial
GROUP BY cl.countrycode
HAVING SUM(cl.percentage) >= 90 ;Toutes les questions portent sur le schéma world.
world