Sur le serveur, dans votre schéma personnel, créer les fonctions SQL et vues correspondant aux cinq questions suivantes.


Les pays où l’on cause le ….

Écrire une fonction SQL nommée cc_fonc_1 qui prend en argument une chaine de caractères censée désigner une langue et renvoie une table (name_country TEXT, pop_speakers int4) qui contient les 5 pays comportant le plus de locuteurs de la langue en question et pour chaque pays le nombre estimé de locuteurs de la langue en question

Réponse attendue pour %French% :

name_country pop_speakers
France 55435254
Canada 7288398
Belgium 3337914
Tunisia 2521118
United States 1948499
solution

TODO


Pays peu concentrés sur les grandes villes

Créer une vue cc_vue_2 des pays dont la population n’est pas nulle et où les cinq plus grandes villes ne rassemblent pas plus du dixième de la population. La vue aura pour schéma (countrycode, name_country, portion)

Réponse attendue pour

SELECT * 
FROM username.cc_vue_2 cv 
WHERE cv.countrycode  IN (
 SELECT c.countrycode 
 FROM world.country c 
 WHERE region='Eastern Africa'
) ;
countrycode name_country portion
MDG Madagascar 0.07045295
MWI Malawi 0.08367222
BDI Burundi 0.04480956
COM Comoros 0.062283736
TZA Tanzania 0.071704924
MYT Mayotte 0.08053691
UGA Uganda 0.040903665
RWA Rwanda 0.036984354
ETH Ethiopia 0.047906272
solution

TODO


La cinquième ville la plus peuplée dans chaque pays

Écrire une fonction de cc_fonc_3 langage SQL qui prend en argument une chaine de caractères censée désigner un pays par son nom et renvoie le nom de la cinquième ville la plus peuplée du pays (type de name_city), et la part de la population du pays qui réside dans cette ville (type float4).

Réponse attendue pour

SELECT name_city, prop 
FROM username.cc_fonc_3('Italy') ;
name_city prop
Palermo 0.011854959
solution

TODO


La population des deux villes les plus peuplées de chaque pays

Créer une vue cc_vue_4 qui liste par pays, le nombre d’habitants des deux villes les plus peuplées. La vue aura pour schéma (name_contry text, pop_two_cities int4).

Réponse attendue pour

SELECT * 
FROM username.cc_vue_4 
WHERE name_country = 'France' ;
name_country pop_two_cities
France 2923676
solution

TODO


Pays où deux langues sont parlées par au moins un dixième de la population

Créer une vue cc_vue_5 des pays où au moins deux langues sont (chacunes) parlées par au moins un dixieme de la population. La vue aura même schema que world.country.

SELECT 
  countrycode, name_country  
FROM 
  username.cc_vue_5 
WHERE 
  region='Eastern Europe' ;
countrycode name_country
CZE Czech Republic
BLR Belarus
MDA Moldova
UKR Ukraine
SVK Slovakia
solution
SELECT 
  countrycode 
FROM 
  countrylanguage
WHERE 
  percentage >= 10 
GROUP BY countrycode
HAVING COUNT(language) >= 2;