13 Exercices Sur Les Requêtes SQL Corrigé: Les vues

La meilleure façon d’apprendre quelque chose est de pratiquer des exercices. Nous avons préparer ces exercices corrigés pour les personnes (débutantes ou intermédiaires) qui sont familières avec SQL. Nous espérons que ces exercices vous aideront à améliorer vos compétences en SQL. Les exercices corrigés suivantes sont actuellement disponibles, nous travaillons dur pour ajouter plus d’exercices. Bon apprentissage!

Vous pouvez lire notre tutoriel SQL avant de résoudre les exercices suivants.

 
 

Exercices Sur Les Requêtes SQL Corrigé: Les vues (views)

1. A partir de la table suivante, créez une vue pour les fournisseurs qui appartiennent à la ville « Paris ».

Table: fournisseurs

+----------------+----------------+-------------+------------+
| fournisseur_id |      nom_fr    |    ville    | commission |
+----------------+----------------+-------------+------------+
|      6001      | Arnaud Beaulac | Toulouse    |  0.2       |
|      6002      | Fauna Gaillard | Paris       |  0.5       |
|      6005      | Barry Cantin   | Nice        |  0.9       |
|      6006      | Royce Guimond  | Strasbourg  |  0.6       |
|      6007      | Fusberta Faure | Marseille   |  0.8       |
|      6003      | Ernest Petit   | Montpellier |  0.1       |
+----------------+----------------+-------------+------------+
CREATE VIEW vuesparis
AS SELECT *
FROM fournisseurs
WHERE ville = 'Paris';

Sortie de la requête :
 

 

2. À partir de la table suivante, créez une vue pour tous les fournisseurs. Renvoyez l’ID, le nom et la ville du fournisseur.

Table: fournisseurs

+----------------+----------------+-------------+------------+
| fournisseur_id |      nom_fr    |    ville    | commission |
+----------------+----------------+-------------+------------+
|      6001      | Arnaud Beaulac | Toulouse    |  0.2       |
|      6002      | Fauna Gaillard | Paris       |  0.5       |
|      6005      | Barry Cantin   | Nice        |  0.9       |
|      6006      | Royce Guimond  | Strasbourg  |  0.6       |
|      6007      | Fusberta Faure | Marseille   |  0.8       |
|      6003      | Ernest Petit   | Montpellier |  0.1       |
+----------------+----------------+-------------+------------+
CREATE VIEW v_fournisseur
AS SELECT fournisseur_id, nom_fr, ville
FROM fournisseurs;

Sortie de la requête :
 

 

3. A partir du table suivante, créez une vue qui compte le nombre de clients par âge.

Table: clients

+-----------+----------------+-------------+--------+----------------+
| client_id |     nom_cl     |    ville    |  age   | fournisseur_id |
+-----------+----------------+-------------+--------+----------------+
|    1001   | Alex Barbara   | Paris       |  25    |      6001      |
|    1002   | Lois Collins   | Lyon        |  30    |      6001      |
|    1005   | Karen Farley   | Nice        |  44    |      6002      |
|    1006   | Kevin Thompson | Paris       |  65    |      6003      |
|    1007   | Scott Henry    | Marseille   |  32    |      6006      |
|    1003   | Ellen McMullen | Montpellier |  53    |      6001      |
+-----------+----------------+-------------+--------+----------------+
La requête suivante crée une VUE nommée « agecount » avec les colonnes « age » et « nombre ».

CREATE VIEW agecount(age, nombre)
AS SELECT age, COUNT(*)
FROM clients
GROUP BY age;

Sortie de la requête :
 

 

 
 
4. A partir de la table suivante, créez une vue pour compter le nombre de clients uniques, calculer la moyenne et le montant total des achats des commandes des clients pour chaque date.

Table: commandes

+--------+----------------+-------------+-----------+----------------+
| cmd_id | montant_achat  |  date_cmd   | client_id | fournisseur_id |
+--------+----------------+-------------+-----------+----------------+
| 8001   | 125.02         | 2024-10-06  |  1005     |      6002      |
| 8002   | 60.38          | 2024-02-22  |  1005     |      6002      |
| 8003   | 95.65          | 2024-05-11  |  1002     |      6001      |
| 8004   | 59.32          | 2024-12-22  |  1006     |      6003      |
| 8005   | 74.33          | 2024-11-30  |  1006     |      6003      |
| 8006   | 188.22         | 2024-01-05  |  1003     |      6001      |
+--------+----------------+-------------+-----------+----------------+
CREATE VIEW totalcmd
AS SELECT date_cmd, COUNT(DISTINCT client_id), AVG(montant_achat), SUM(montant_achat)
FROM commandes
GROUP BY date_cmd;

Sortie de la requête :
 

 

5. À partir des tables suivantes, créez une vue permettant d’obtenir le nom du fournisseur et du client. Renvoyez l’ID de la commande, le montant de l’achat, l’ID et le nom du fournisseur, le nom du client.

Table: fournisseurs

+----------------+----------------+-------------+------------+
| fournisseur_id |      nom_fr    |    ville    | commission |
+----------------+----------------+-------------+------------+
|      6001      | Arnaud Beaulac | Toulouse    |  0.2       |
|      6002      | Fauna Gaillard | Paris       |  0.5       |
|      6005      | Barry Cantin   | Nice        |  0.9       |
|      6006      | Royce Guimond  | Strasbourg  |  0.6       |
|      6007      | Fusberta Faure | Marseille   |  0.8       |
|      6003      | Ernest Petit   | Montpellier |  0.1       |
+----------------+----------------+-------------+------------+
Table: clients

+-----------+----------------+-------------+--------+----------------+
| client_id |     nom_cl     |    ville    |  age   | fournisseur_id |
+-----------+----------------+-------------+--------+----------------+
|    1001   | Alex Barbara   | Paris       |  25    |      6001      |
|    1002   | Lois Collins   | Lyon        |  30    |      6001      |
|    1005   | Karen Farley   | Nice        |  44    |      6002      |
|    1006   | Kevin Thompson | Paris       |  65    |      6003      |
|    1007   | Scott Henry    | Marseille   |  32    |      6006      |
|    1003   | Ellen McMullen | Montpellier |  53    |      6001      |
+-----------+----------------+-------------+--------+----------------+
Table: commandes

+--------+----------------+-------------+-----------+----------------+
| cmd_id | montant_achat  |  date_cmd   | client_id | fournisseur_id |
+--------+----------------+-------------+-----------+----------------+
| 8001   | 125.02         | 2024-10-06  |  1005     |      6002      |
| 8002   | 60.38          | 2024-02-22  |  1005     |      6002      |
| 8003   | 95.65          | 2024-05-11  |  1002     |      6001      |
| 8004   | 59.32          | 2024-12-22  |  1006     |      6003      |
| 8005   | 74.33          | 2024-11-30  |  1006     |      6003      |
| 8006   | 188.22         | 2024-01-05  |  1003     |      6001      |
+--------+----------------+-------------+-----------+----------------+
CREATE VIEW v_commandes
AS SELECT cmd_id, montant_achat, cm.fournisseur_id, nom_fr, nom_cl
FROM commandes cm, clients cl, fournisseurs f
WHERE cm.client_id = cl.client_id
AND cm.fournisseur_id = f.fournisseur_id;

Sortie de la requête :
 

 

 
 
6. A partir des tables suivantes, créez une vue pour trouver le fournisseur qui travaille avec le client qui a passé la commande la plus élevée de la journée. Renvoyez la date de la commande, l’ID du fournisseur et le nom.

Table: fournisseurs

+----------------+----------------+-------------+------------+
| fournisseur_id |      nom_fr    |    ville    | commission |
+----------------+----------------+-------------+------------+
|      6001      | Arnaud Beaulac | Toulouse    |  0.2       |
|      6002      | Fauna Gaillard | Paris       |  0.5       |
|      6005      | Barry Cantin   | Nice        |  0.9       |
|      6006      | Royce Guimond  | Strasbourg  |  0.6       |
|      6007      | Fusberta Faure | Marseille   |  0.8       |
|      6003      | Ernest Petit   | Montpellier |  0.1       |
+----------------+----------------+-------------+------------+
Table: commandes

+--------+----------------+-------------+-----------+----------------+
| cmd_id | montant_achat  |  date_cmd   | client_id | fournisseur_id |
+--------+----------------+-------------+-----------+----------------+
| 8001   | 125.02         | 2024-10-06  |  1005     |      6002      |
| 8002   | 60.38          | 2024-02-22  |  1005     |      6002      |
| 8003   | 95.65          | 2024-05-11  |  1002     |      6001      |
| 8004   | 59.32          | 2024-12-22  |  1006     |      6003      |
| 8005   | 74.33          | 2024-11-30  |  1006     |      6003      |
| 8006   | 188.22         | 2024-01-05  |  1003     |      6001      |
+--------+----------------+-------------+-----------+----------------+
CREATE VIEW topcommand
AS SELECT c1.date_cmd, f.fournisseur_id, f.nom_fr
FROM fournisseurs f, commandes c1
WHERE f.fournisseur_id = c1.fournisseur_id
AND c1.montant_achat =
    (SELECT MAX(montant_achat)
       FROM commandes c2
       WHERE c2.date_cmd = c1.date_cmd);

Sortie de la requête :
 

 

7. À partir du table suivante, créez une vue pour trouver tous les clients qui ont l’age le plus élevé. Retournez tous les champs du client.

Table: clients

+-----------+----------------+-------------+--------+----------------+
| client_id |     nom_cl     |    ville    |  age   | fournisseur_id |
+-----------+----------------+-------------+--------+----------------+
|    1001   | Alex Barbara   | Paris       |  25    |      6001      |
|    1002   | Lois Collins   | Lyon        |  30    |      6001      |
|    1005   | Karen Farley   | Nice        |  44    |      6002      |
|    1006   | Kevin Thompson | Paris       |  65    |      6003      |
|    1007   | Scott Henry    | Marseille   |  32    |      6006      |
|    1003   | Ellen McMullen | Montpellier |  53    |      6001      |
+-----------+----------------+-------------+--------+----------------+
CREATE VIEW agemax
AS SELECT *
FROM clients
WHERE age =
    (SELECT MAX(age)
     FROM clients);

Sortie de la requête :
 

 

8. À partir du table suivante, créez une vue pour compter le nombre de fournisseurs dans chaque ville. Retourner ville et le nombre de fournisseur.

Table: fournisseurs

+----------------+----------------+-------------+------------+
| fournisseur_id |      nom_fr    |    ville    | commission |
+----------------+----------------+-------------+------------+
|      6001      | Arnaud Beaulac | Toulouse    |  0.2       |
|      6002      | Fauna Gaillard | Paris       |  0.5       |
|      6005      | Barry Cantin   | Nice        |  0.9       |
|      6006      | Royce Guimond  | Strasbourg  |  0.6       |
|      6007      | Fusberta Faure | Marseille   |  0.8       |
|      6003      | Ernest Petit   | Montpellier |  0.1       |
+----------------+----------------+-------------+------------+
CREATE VIEW nbrf
AS SELECT ville, COUNT(DISTINCT fournisseur_id)
FROM fournisseurs
GROUP BY ville;

Sortie de la requête :
 

 

 
 
9. À partir des tables suivantes, créez une vue pour calculer le montant moyen des achats et le montant total des achats pour chaque fournisseur. Retournez le nom, le montant moyen des achats et le montant total des achats. (Supposez que tous les noms sont uniques).

Table: fournisseurs

+----------------+----------------+-------------+------------+
| fournisseur_id |      nom_fr    |    ville    | commission |
+----------------+----------------+-------------+------------+
|      6001      | Arnaud Beaulac | Toulouse    |  0.2       |
|      6002      | Fauna Gaillard | Paris       |  0.5       |
|      6005      | Barry Cantin   | Nice        |  0.9       |
|      6006      | Royce Guimond  | Strasbourg  |  0.6       |
|      6007      | Fusberta Faure | Marseille   |  0.8       |
|      6003      | Ernest Petit   | Montpellier |  0.1       |
+----------------+----------------+-------------+------------+
Table: commandes

+--------+----------------+-------------+-----------+----------------+
| cmd_id | montant_achat  |  date_cmd   | client_id | fournisseur_id |
+--------+----------------+-------------+-----------+----------------+
| 8001   | 125.02         | 2024-10-06  |  1005     |      6002      |
| 8002   | 60.38          | 2024-02-22  |  1005     |      6002      |
| 8003   | 95.65          | 2024-05-11  |  1002     |      6001      |
| 8004   | 59.32          | 2024-12-22  |  1006     |      6003      |
| 8005   | 74.33          | 2024-11-30  |  1006     |      6003      |
| 8006   | 188.22         | 2024-01-05  |  1003     |      6001      |
+--------+----------------+-------------+-----------+----------------+
CREATE VIEW avgcmd
AS SELECT nom_fr, AVG(montant_achat), SUM(montant_achat)
FROM fournisseurs, commandes
WHERE fournisseurs.fournisseur_id = commandes.fournisseur_id
GROUP BY nom_fr;

Sortie de la requête :
 

 

10. À partir des tables suivantes, créez une vue pour identifier les fournisseurs qui travaillent avec plusieurs clients. Retournez tous les champs de fournisseur.

Table: fournisseurs

+----------------+----------------+-------------+------------+
| fournisseur_id |      nom_fr    |    ville    | commission |
+----------------+----------------+-------------+------------+
|      6001      | Arnaud Beaulac | Toulouse    |  0.2       |
|      6002      | Fauna Gaillard | Paris       |  0.5       |
|      6005      | Barry Cantin   | Nice        |  0.9       |
|      6006      | Royce Guimond  | Strasbourg  |  0.6       |
|      6007      | Fusberta Faure | Marseille   |  0.8       |
|      6003      | Ernest Petit   | Montpellier |  0.1       |
+----------------+----------------+-------------+------------+
Table: clients

+-----------+----------------+-------------+--------+----------------+
| client_id |     nom_cl     |    ville    |  age   | fournisseur_id |
+-----------+----------------+-------------+--------+----------------+
|    1001   | Alex Barbara   | Paris       |  25    |      6001      |
|    1002   | Lois Collins   | Lyon        |  30    |      6001      |
|    1005   | Karen Farley   | Nice        |  44    |      6002      |
|    1006   | Kevin Thompson | Paris       |  65    |      6003      |
|    1007   | Scott Henry    | Marseille   |  32    |      6006      |
|    1003   | Ellen McMullen | Montpellier |  53    |      6001      |
+-----------+----------------+-------------+--------+----------------+
CREATE VIEW fourclient
AS SELECT *
FROM fournisseurs f
WHERE 1 <
   (SELECT COUNT(*)
     FROM clients c
     WHERE f.fournisseur_id = c.fournisseur_id);

Sortie de la requête :
 

 

 
 
11. À partir des tables suivantes, créez une vue pour afficher le nombre de commandes par jour. Renvoyez la date de la commande et le nombre de commandes.

Table: commandes

+--------+----------------+-------------+-----------+----------------+
| cmd_id | montant_achat  |  date_cmd   | client_id | fournisseur_id |
+--------+----------------+-------------+-----------+----------------+
| 8001   | 125.02         | 2024-10-06  |  1005     |      6002      |
| 8002   | 60.38          | 2024-02-22  |  1005     |      6002      |
| 8003   | 95.65          | 2024-05-11  |  1002     |      6001      |
| 8004   | 59.32          | 2024-12-22  |  1006     |      6003      |
| 8005   | 74.33          | 2024-11-30  |  1006     |      6003      |
| 8006   | 188.22         | 2024-01-05  |  1003     |      6001      |
+--------+----------------+-------------+-----------+----------------+
CREATE VIEW datecommande(date_cmd, count_cmd)
AS SELECT date_cmd, COUNT(*)
FROM commandes
GROUP BY date_cmd;

Sortie de la requête :
 

 

12. À partir des tables suivantes, créez une vue pour trouver les fournisseurs qui ont passé des commandes le 05 janvier 2024. Retournez tous les champs de fournisseur.

Table: fournisseurs

+----------------+----------------+-------------+------------+
| fournisseur_id |      nom_fr    |    ville    | commission |
+----------------+----------------+-------------+------------+
|      6001      | Arnaud Beaulac | Toulouse    |  0.2       |
|      6002      | Fauna Gaillard | Paris       |  0.5       |
|      6005      | Barry Cantin   | Nice        |  0.9       |
|      6006      | Royce Guimond  | Strasbourg  |  0.6       |
|      6007      | Fusberta Faure | Marseille   |  0.8       |
|      6003      | Ernest Petit   | Montpellier |  0.1       |
+----------------+----------------+-------------+------------+
Table: commandes

+--------+----------------+-------------+-----------+----------------+
| cmd_id | montant_achat  |  date_cmd   | client_id | fournisseur_id |
+--------+----------------+-------------+-----------+----------------+
| 8001   | 125.02         | 2024-10-06  |  1005     |      6002      |
| 8002   | 60.38          | 2024-02-22  |  1005     |      6002      |
| 8003   | 95.65          | 2024-05-11  |  1002     |      6001      |
| 8004   | 59.32          | 2024-12-22  |  1006     |      6003      |
| 8005   | 74.33          | 2024-11-30  |  1006     |      6003      |
| 8006   | 188.22         | 2024-01-05  |  1003     |      6001      |
+--------+----------------+-------------+-----------+----------------+
CREATE VIEW fournjanvier
AS SELECT *
FROM fournisseurs
WHERE fournisseur_id IN
    (SELECT fournisseur_id
         FROM commandes
         WHERE date_cmd = '2024-01-05');

Sortie de la requête :
 

 

13. À partir des tables suivantes, créez une vue pour trouver les fournisseurs qui ont passé des commandes le 06 octobre 2024 ou le 22 décembre 2024. Renvoyez l'ID du fournisseur, le numéro de commande et l'ID du client.

Table: commandes

+--------+----------------+-------------+-----------+----------------+
| cmd_id | montant_achat  |  date_cmd   | client_id | fournisseur_id |
+--------+----------------+-------------+-----------+----------------+
| 8001   | 125.02         | 2024-10-06  |  1005     |      6002      |
| 8002   | 60.38          | 2024-02-22  |  1005     |      6002      |
| 8003   | 95.65          | 2024-05-11  |  1002     |      6001      |
| 8004   | 59.32          | 2024-12-22  |  1006     |      6003      |
| 8005   | 74.33          | 2024-11-30  |  1006     |      6003      |
| 8006   | 188.22         | 2024-01-05  |  1003     |      6001      |
+--------+----------------+-------------+-----------+----------------+
CREATE VIEW vue_commande
AS SELECT fournisseur_id, cmd_id, client_id
FROM commandes
WHERE date_cmd IN ('2024-10-06', '2024-12-22');

Sortie de la requête :
 

 

 

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *