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.countrycodeFROM
world.city ci WHERE
> 10000000
ci.population_city 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 AS (PARTITION BY cl.countrycode ORDER BY cl.percentage DESC)
w
)
SELECT
R.countrycode, R.languageFROM
RWHERE
<= 3 ; R.rnk
Dans le schéma world
, lister les langues parlées sur tous les continents.
SELECT
languageFROM
country coNATURAL JOIN
countrylanguage clGROUP BY
cl.languageHAVING 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.isofficialGROUP BY
co.region
Dans 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
USING (countrycode)
world.city ci 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
id, ci.population,
co.countrycode, co.name_country, ci. name, ci.1=ci.id) AS capitale,
(co.capital2RANK() OVER (PARTITION BY co.countrycode ORDER BY ci.population DESC) AS rnk
FROM
world.country coJOIN
USING (countrycode)
world.city ci
)
SELECT
R.name_country, R. name, R.populationFROM
R WHERE
3AND rnk = 1
capitale ;
- 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.countrycodeFROM
world.countrylanguage cl WHERE
cl.isofficialGROUP BY cl.countrycode
HAVING SUM(cl.percentage) >= 90 ;
Toutes les questions portent sur le schéma world
.
world