Aller au contenu

Test initial

·2 mins·

Soit un modèle de données composé de trois tables :

  • Une table PAYS. Celle-ci comporte 5 champs :

    • ID_PAYS (champ entier numérique)
    • COD_PAYS (chaîne de caractère variable de 20 caractères maximum)
    • LIB_PAYS (chaîne de caractère fixe de 50 caractères)
    • RICH_PAR_HABITANT (champ numérique avec deux chiffres après la virgule en précision)

    La clé primaire de la table est ID_PAYS.

  • Une table REGION. Celle-ci comporte 4 champs :

    • ID_REGION (champ numérique)
    • COD_REGION (chaîne de caractère variable de 20 caractères maximum)
    • LIB_REGION (chaîne de caractère fixe de 50 caractères)
    • ID_PAYS (champ entier numérique)

    La clé primaire de la table est ID_REGION.

  • Une table REGROUPEMENT_COMMERCIAL_PAYS permettant d’indiquer, pour un pays donné, à quel regroupement commercial il appartient. Un regroupement peut contenir plusieurs pays et un pays peut appartenir à plusieurs regroupements.

    Champs :

    • ID_RGP_CCIAL
    • ID_PAYS
    • LIB_RGP

Questions
#

  1. Écrivez une requête SQL permettant de remonter pour chaque pays, les régions associées. (Ne pas prendre les pays qui n’ont pas de région.)

     SELECT
         P.LIB_PAYS,
         R.LIB_REGION
     FROM PAYS P
     INNER JOIN REGION R
         ON P.ID_PAYS = R.ID_PAYS;
  2. Écrivez une requête SQL permettant de compter le nombre de région qu’il y a dans chaque pays. (Afficher aussi les pays qui n’ont aucune région.)

     SELECT
         P.LIB_PAYS,
         COUNT(R.ID_REGION) AS NB_REGIONS
     FROM PAYS P
     LEFT JOIN REGION R
         ON P.ID_PAYS = R.ID_PAYS
     GROUP BY
         P.ID_PAYS,
         P.LIB_PAYS;
  3. Écrivez une requête permettant de sélectionner toutes les régions du pays France. (La valeur de COD_PAYS est FR.)

     SELECT
         R.*
     FROM REGION R
     INNER JOIN PAYS P
         ON R.ID_PAYS = P.ID_PAYS
     WHERE P.COD_PAYS = 'FR';
  4. Écrivez une requête permettant de sélectionner les pays qui n’ont pas de regroupement commercial.

     SELECT
         P.*
     FROM PAYS P
     WHERE NOT EXISTS (
         SELECT 1
         FROM REGROUPEMENT_COMMERCIAL_PAYS RCP
         WHERE RCP.ID_PAYS = P.ID_PAYS
     );
  5. Écrivez une requête permettant d’afficher le libellé de tous les pays composés d’au moins 2 régions.

     SELECT
         P.LIB_PAYS
     FROM PAYS P
     INNER JOIN REGION R
         ON P.ID_PAYS = R.ID_PAYS
     GROUP BY
         P.ID_PAYS,
         P.LIB_PAYS
     HAVING COUNT(R.ID_REGION) >= 2;
Thibault CLEMENT - Intechnia
Auteur
Thibault CLEMENT - Intechnia
Data Scientist / ML Engineer