Union
Fait partie de la section Les fondamentaux du Journey SQL de Coddy. Leçon 48 sur 72.
Les unions sont différentes des jointures. Les jointures utilisent des conditions pour combiner des tables, tandis que les unions ajoutent simplement deux tables l’une au-dessus de l’autre. Pour utiliser UNION, nous écrirons :
SELECT col1, col2, ... FROM table1
UNION
SELECT col1, col2, ... FROM table2Les deux instructions SELECT doivent respecter les règles suivantes :
- Le nombre de champs doit être égal
- L’ordre est important
- Les colonnes situées au même emplacement doivent avoir des types de données correspondants
Par exemple, supposons que nous ayons les tables suivantes :
germany_people
| id | name |
| 1 | Lena |
| 2 | Leonie |
england_people
| id | name |
| 1 | George |
| 2 | Lena |
Problème : Nous voulons créer une grande table contenant tous les noms dont nous disposons.
SELECT name from germany_people
UNION
SELECT name from england_peopleRésultat :
| name |
| Lena |
| Leonie |
| George |
UNION renvoie uniquement les valeurs distinctes, tandis que UNION ALL renvoie tous les enregistrements tels quels :
SELECT name from germany_people
UNION ALL
SELECT name from england_peopleRésultat :
| name |
| Lena |
| Leonie |
| George |
| Lena |
Vous pouvez également combiner UNION ALL avec des fonctions d’agrégation, GROUP BY et ORDER BY pour résumer les données de plusieurs tables. L’astuce consiste à placer UNION ALL dans une sous-requête, puis à appliquer le regroupement et le tri par-dessus.
Par exemple, supposons que nous voulions compter combien de fois chaque nom apparaît dans les deux tables :
SELECT name, COUNT(*) AS total_count
FROM (
SELECT name FROM germany_people
UNION ALL
SELECT name FROM england_people
) AS combined
GROUP BY name
ORDER BY total_count DESCRésultat :
| name | total_count |
| Lena | 2 |
| Leonie | 1 |
| George | 1 |
Ici, UNION ALL (et non UNION) est utilisé afin de conserver les doublons comme Lena. Sinon, ils seraient supprimés avant le comptage. La sous-requête fusionne toutes les lignes, puis GROUP BY + COUNT les récapitulent. ORDER BY trie le résultat final.
Défi
FacileTables et colonnes disponibles :
sales_2009:product_id,quantity_soldsales_2010:product_id,quantity_soldsales_2011:product_id,quantity_sold
Il y a 3 tables de ventes.
Trouvez la somme des ventes pour chaque produit de toutes les tables réunies.
Le résultat doit inclure le product_id et le total des ventes.
Nommez cette colonne total_sales.
Triez les résultats par total des ventes décroissant.
Essayez vous-même
-- Empiler les trois tables en un seul résultat, en conservant chaque ligne
SELECT product_id, ____ AS total_sales
FROM (
SELECT * FROM sales_2009
____
SELECT * FROM sales_2010
____
SELECT * FROM sales_2011
)
-- Une ligne par produit, le plus grand total en premier
GROUP BY ____
ORDER BY ____ DESC;Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Les fondamentaux
1Introduction
IntroductionQu’est-ce qu’une base de donnéesConcepts des bases de donnéesValeurs uniques4D’autres mots-clés
Le mot-clé INLe mot-clé BETWEENLe mot-clé LIKELe mot-clé ASRécapitulatif - Modèles de téléphones portables2Conditions
Bases des conditionsLe mot-clé ANDLe mot-clé ORLe mot-clé NOTCombinaison de plusieurs conditionsParenthèsesBooléens5Opérations arithmétiques
Opérateurs mathématiquesColonnes mathématiquesL’opération moduloLa fonction ROUND()3Format de retour spécifique
Valeurs NULLTrier les résultats, partie 1Trier les résultats, partie 2Récapitulatif - Entreprise de cybersécuritéLimiter le nombre d’enregistrementsRécapitulatif - Usine de véhicules6Défis d’introduction
Récapitulatif - Élection parlementaireRécapitulatif - Arrestation criminelle par la policeRécapitulatif - Récipient de boisson au barRécapitulatif - Ingénieur de nouvelles colonnes9Tables multiples
Jointure de base, partie 1Jointure de base, partie 2Récapitulatif - JointureAuto-jointureRécapitulatif - Auto-jointureUnionSimplifier les requêtes, mot-clé WITHRécapitulatif - Requêtes WITHRécapitulatif - Entrepreneur immobilier12Fonctions de fenêtre – partie 2
Fonctions RANK & DENSE_RANKRécapitulatif – RANK & DENSE_RANKFonction NTILEFonctions d’agrégationCritère ROWS & RANGEEntraînez-vous par vous-même : Playground SQL