SQL UNION
On november 16, 2021 by adminStart her? Denne lektion er en del af en komplet vejledning i brugen af SQL til dataanalyse. Tjek begyndelsen.
I denne lektion dækker vi:
- SQL UNION-operatoren
- Praksisopgaver
SQL UNION-operatoren
SQL-joins giver dig mulighed for at kombinere to datasæt side om side, men UNION
giver dig mulighed for at stable det ene datasæt oven på det andet. Sagt på en anden måde giver UNION
dig mulighed for at skrive to separate SELECT
-erklæringer og få resultaterne af den ene erklæring vist i samme tabel som resultaterne fra den anden erklæring.
Lad os prøve det med investeringsdataene fra Crunchbase, som er blevet opdelt i to tabeller i forbindelse med denne lektion. Følgende forespørgsel vil vise alle resultater fra den første del af forespørgslen og derefter alle resultater fra den anden del i samme tabel:
SELECT * FROM tutorial.crunchbase_investments_part1 UNION SELECT * FROM tutorial.crunchbase_investments_part2
Bemærk, at UNION
kun tilføjer distinkte værdier. Mere specifikt, når du bruger UNION
, tilføjes datasættet, og alle rækker i den tilføjede tabel, som er nøjagtigt identiske med rækker i den første tabel, udelades. Hvis du ønsker at tilføje alle værdierne fra den anden tabel, skal du bruge UNION ALL
. Du vil sandsynligvis bruge UNION ALL
langt oftere end UNION
. I dette særlige tilfælde er der ingen dublerede rækker, så UNION ALL
vil give de samme resultater:
SELECT * FROM tutorial.crunchbase_investments_part1 UNION ALL SELECT * FROM tutorial.crunchbase_investments_part2
SQL har strenge regler for tilføjelse af data:
- Både tabeller skal have det samme antal kolonner
- Kolonnerne skal have de samme datatyper i samme rækkefølge som i den første tabel
Som kolonnenavnene ikke nødvendigvis behøver at være de samme, vil du opleve, at de typisk er det. Det skyldes, at de fleste af de tilfælde, hvor du ønsker at bruge UNION
, involverer sammenføjning af forskellige dele af det samme datasæt (som det er tilfældet her).
Da du skriver to separate SELECT
-meddelelser, kan du behandle dem forskelligt, før du tilføjer dem. Du kan f.eks. filtrere dem forskelligt ved hjælp af forskellige WHERE
klausuler.
Skærp dine SQL-færdigheder
Praksisopgave
Skriv en forespørgsel, der føjer de to crunchbase_investments
datasæt ovenfor sammen (inklusive dubletterede værdier). Filtrer det første datasæt til kun at omfatte virksomheder med navne, der begynder med bogstavet “T”, og filtrer det andet datasæt til virksomheder med navne, der begynder med “M” (begge dele uden hensyn til store og små bogstaver). Medtag kun kolonnerne company_permalink
, company_name
og investor_name
.
Prøv det Se svaret
For en lidt større udfordring:
Praksisopgave
Skriv en forespørgsel, der viser 3 kolonner. Den første angiver hvilket datasæt (del 1 eller 2) dataene kommer fra, den anden viser virksomhedens status, og den tredje er en optælling af antallet af investorer.
Hinvis: Du bliver nødt til at bruge tabellen tutorial.crunchbase_companies
samt tabellerne for investeringer. Og du skal gruppere efter status og datasæt.
Prøv det Se svaret
Skriv et svar