6 Exercices Sur Les Requêtes SQL Corrigé: UNION

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é : L’opérateur UNION

1. A partir des tables suivantes, écrivez une requête SQL pour trouver tous les fournisseurs et les clients situés dans la ville de 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       |
+----------------+----------------+-------------+------------+
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      |
+-----------+----------------+-------------+--------+----------------+
SELECT fournisseur_id "ID", nom_fr, 'Fournisseur'
FROM fournisseurs
WHERE ville='Paris'
UNION
(SELECT client_id "ID", nom_cl, 'Client'
FROM clients
WHERE ville='Paris')

Sortie de la requête :
 

 

2. À partir des tables suivantes, écrivez une requête SQL pour trouver des fournisseurs distincts et leurs villes. Renvoyez l’ID du fournisseur et la ville.

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      |
+-----------+----------------+-------------+--------+----------------+
SELECT fournisseur_id, ville FROM clients
UNION
(SELECT fournisseur_id, ville FROM fournisseurs);

Sortie de la requête :
 

 

 
 
3. À partir des tables suivantes, écrivez une requête SQL pour trouver tous les fournisseurs et les clients qui sont impliqués dans des commandes. Renvoyer l’ID du fournisseur 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      |
+--------+----------------+-------------+-----------+----------------+
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      |
+-----------+----------------+-------------+--------+----------------+
SELECT fournisseur_id, client_id FROM clients
UNION 
(SELECT fournisseur_id, client_id FROM commandes)

Sortie de la requête :
 

 

4. À partir des tables suivantes, écrivez une requête SQL pour trouver les fournisseurs qui ont généré les commandes les plus importantes et les plus faibles à chaque date. Retournez l’ID du fournisseur, son nom, le numéro de commande, la commande la plus importante/la plus faible, la date de la commande.

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      |
+--------+----------------+-------------+-----------+----------------+
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       |
+----------------+----------------+-------------+------------+
SELECT f.fournisseur_id, nom_fr, cmd_id, 'plus importante', date_cmd
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
)

UNION

SELECT f.fournisseur_id, nom_fr, cmd_id, 'plus faible', date_cmd
FROM fournisseurs f, commandes c1
WHERE f.fournisseur_id = c1.fournisseur_id
AND c1.montant_achat = (
    SELECT MIN(montant_achat)
    FROM commandes c2
    WHERE c2.date_cmd = c1.date_cmd
)

Sortie de la requête :
 

 

 
5. À partir des tables suivantes, écrivez une requête SQL pour trouver les fournisseurs qui ont généré les commandes les plus importantes et les plus faibles à chaque date. Triez l’ensemble des résultats sur le troisième champ. Retournez l’ID du fournisseur, son nom, le numéro de commande, la commande la plus importante/la plus faible, la date de la commande.

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      |
+--------+----------------+-------------+-----------+----------------+
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       |
+----------------+----------------+-------------+------------+
SELECT f.fournisseur_id, nom_fr, cmd_id, 'plus importante', date_cmd
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
)

UNION

SELECT f.fournisseur_id, nom_fr, cmd_id, 'plus faible', date_cmd
FROM fournisseurs f, commandes c1
WHERE f.fournisseur_id = c1.fournisseur_id
AND c1.montant_achat = (
    SELECT MIN(montant_achat)
    FROM commandes c2
    WHERE c2.date_cmd = c1.date_cmd
)
-- Trier les résultats en fonction de la troisième colonne (cmd_id)
ORDER BY 3

Sortie de la requête :
 

 

 
 
6. À partir du tableau suivant, écrivez une requête SQL pour trouver les fournisseurs et les clients qui ont passé plus d’une commande. Retourner l’ID et le nom.

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      |
+--------+----------------+-------------+-----------+----------------+
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      |
+-----------+----------------+-------------+--------+----------------+
SELECT client_id as "ID", nom_cl as "Nom"
FROM clients cl
WHERE 1 <
    (SELECT COUNT(*)
     FROM commandes cm
     WHERE cl.client_id = cm.client_id)

UNION

SELECT fournisseur_id as "ID", nom_fr as "Nom"
FROM fournisseurs f
WHERE 1 <
    (SELECT COUNT(*)
     FROM commandes cm
     WHERE f.fournisseur_id = cm.fournisseur_id)
	 
ORDER BY 2

Sortie de la requête :
 

 

 

Laisser un commentaire

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