SQL UNION
On november 16, 2021 by adminBegint u hier? Deze les maakt deel uit van een volledige zelfstudie over het gebruik van SQL voor gegevensanalyse. Bekijk het begin.
In deze les behandelen we:
- De SQL UNION operator
- Oefenproblemen
De SQL UNION operator
SQL joins stellen u in staat om twee datasets naast elkaar te combineren, maar UNION
stelt u in staat om de ene dataset op de andere te stapelen. Anders gezegd, UNION
staat u toe om twee afzonderlijke SELECT
verklaringen te schrijven, en om de resultaten van één verklaring in dezelfde tabel weer te geven als de resultaten van de andere verklaring.
Laten we het eens uitproberen met de Crunchbase investeringsgegevens, die in twee tabellen zijn gesplitst voor de doeleinden van deze les. De volgende query toont alle resultaten van het eerste deel van de query, en vervolgens alle resultaten van het tweede deel in dezelfde tabel:
SELECT * FROM tutorial.crunchbase_investments_part1 UNION SELECT * FROM tutorial.crunchbase_investments_part2
Merk op dat UNION
alleen afzonderlijke waarden appendeert. Meer specifiek, wanneer u UNION
gebruikt, wordt de dataset toegevoegd, en alle rijen in de toegevoegde tabel die precies identiek zijn aan rijen in de eerste tabel worden verwijderd. Als u alle waarden uit de tweede tabel wilt toevoegen, gebruikt u UNION ALL
. U zult UNION ALL
waarschijnlijk veel vaker gebruiken dan UNION
. In dit geval zijn er geen dubbele rijen, dus UNION ALL
zal hetzelfde resultaat opleveren:
SELECT * FROM tutorial.crunchbase_investments_part1 UNION ALL SELECT * FROM tutorial.crunchbase_investments_part2
QL heeft strikte regels voor het toevoegen van gegevens:
- Beide tabellen moeten hetzelfde aantal kolommen hebben
- De kolommen moeten dezelfde gegevenstypen hebben in dezelfde volgorde als de eerste tabel
Hoewel de kolomnamen niet noodzakelijkerwijs dezelfde hoeven te zijn, zult u merken dat ze dat meestal wel zijn. Dit komt omdat in de meeste gevallen waarin u UNION
zou willen gebruiken, verschillende delen van dezelfde dataset moeten worden samengevoegd (zoals hier het geval is).
Omdat u twee afzonderlijke SELECT
statements schrijft, kunt u ze verschillend behandelen voordat u ze samenvoegt. U kunt ze bijvoorbeeld verschillend filteren met behulp van verschillende WHERE
-clausules.
Step uw SQL-vaardigheden aan
Praktijkprobleem
Schrijf een query die de twee crunchbase_investments
-datasets hierboven appendeert (inclusief duplicaatwaarden). Filter de eerste dataset op alleen bedrijven met namen die beginnen met de letter “T”, en filter de tweede op bedrijven met namen die beginnen met “M” (beide niet hoofdlettergevoelig). Neem alleen de kolommen company_permalink
, company_name
, en investor_name
op.
Probeer het uit Zie het antwoord
Voor een wat grotere uitdaging:
Praktijkprobleem
Schrijf een query die 3 kolommen laat zien. De eerste geeft aan uit welke dataset (deel 1 of 2) de gegevens komen, de tweede geeft de bedrijfsstatus weer, en de derde is een telling van het aantal investeerders.
Hint: u zult zowel de tabel tutorial.crunchbase_companies
als de tabellen met investeringen moeten gebruiken. En u zult willen groeperen op status en dataset.
Probeer het uit Zie het antwoord
Geef een antwoord