SQL UNION
On november 16, 2021 by adminStartar du här? Den här lektionen är en del av en helhetshandledning om hur du använder SQL för dataanalys. Kolla in början.
I den här lektionen tar vi upp:
- SQL UNION-operatorn
- Praktikproblem
SQL UNION-operatorn
SQL joins gör det möjligt för dig att kombinera två datamängder sida vid sida, men UNION
gör det möjligt för dig att stapla en datamängd ovanpå den andra. Annorlunda uttryckt gör UNION
det möjligt att skriva två separata SELECT
-anvisningar och låta resultaten från en anvisning visas i samma tabell som resultaten från den andra anvisningen.
Låt oss prova det med investeringsdata från Crunchbase, som har delats upp i två tabeller för den här lektionens skull. Följande fråga kommer att visa alla resultat från den första delen av frågan och sedan alla resultat från den andra delen i samma tabell:
SELECT * FROM tutorial.crunchbase_investments_part1 UNION SELECT * FROM tutorial.crunchbase_investments_part2
Bemärk att UNION
endast lägger till distinkta värden. När du använder UNION
läggs datamängden till och alla rader i den bifogade tabellen som är exakt identiska med rader i den första tabellen tas bort. Om du vill lägga till alla värden från den andra tabellen använder du UNION ALL
. Du kommer förmodligen att använda UNION ALL
mycket oftare än UNION
. I det här fallet finns det inga dubbla rader, så UNION ALL
ger samma resultat:
SELECT * FROM tutorial.crunchbase_investments_part1 UNION ALL SELECT * FROM tutorial.crunchbase_investments_part2
SQL har strikta regler för att lägga till data:
- Båda tabellerna måste ha samma antal kolumner
- Kolumnerna måste ha samma datatyper i samma ordning som den första tabellen
Samtidigt som kolumnnamnen inte nödvändigtvis behöver vara desamma kommer du att upptäcka att de vanligtvis är det. Detta beror på att de flesta fall där du vill använda UNION
innebär att du måste sammanfoga olika delar av samma dataset (vilket är fallet här).
Då du skriver två separata SELECT
-anvisningar kan du behandla dem på olika sätt innan du lägger till dem. Du kan till exempel filtrera dem på olika sätt med hjälp av olika WHERE
-klausuler.
Skärp dina SQL-färdigheter
Praktikproblem
Skriv en fråga som lägger till de två crunchbase_investments
-datasetterna ovan (inklusive dubblettvärden). Filtrera det första datasetet till endast företag vars namn börjar med bokstaven ”T” och filtrera det andra till företag vars namn börjar med ”M” (båda inte skiftlägeskänsliga). Inkludera endast kolumnerna company_permalink
, company_name
och investor_name
.
Prova dig fram Se svaret
För en lite större utmaning:
Praktikproblem
Skriv en fråga som visar 3 kolumner. Den första anger vilket dataset (del 1 eller 2) som uppgifterna kommer från, den andra visar företagets status och den tredje är en räkning av antalet investerare.
Hänvisning: du måste använda tabellen tutorial.crunchbase_companies
samt tabellerna för investeringar. Och du kommer att vilja gruppera efter status och dataset.
Prova dig fram Se svaret
Lämna ett svar