SQL UNION
On 16 listopada, 2021 by adminZacząć? Ta lekcja jest częścią pełnowymiarowego samouczka na temat użycia SQL do analizy danych. Sprawdź początek.
W tej lekcji omówimy:
- Operator SQL UNION
- Problemy praktyczne
Operator SQL UNION
Połączenia SQL pozwalają na połączenie dwóch zbiorów danych obok siebie, ale UNION
pozwala na ułożenie jednego zbioru danych na drugim. Innymi słowy, UNION
pozwala napisać dwie oddzielne SELECT
instrukcje i sprawić, aby wyniki jednej z nich były wyświetlane w tej samej tabeli, co wyniki drugiej instrukcji.
Wypróbujmy to na danych inwestycyjnych Crunchbase, które na potrzeby tej lekcji zostały podzielone na dwie tabele. Poniższe zapytanie wyświetli wszystkie wyniki z pierwszej części zapytania, a następnie wszystkie wyniki z drugiej części w tej samej tabeli:
SELECT * FROM tutorial.crunchbase_investments_part1 UNION SELECT * FROM tutorial.crunchbase_investments_part2
Zauważ, że UNION
dołącza tylko odrębne wartości. Dokładniej, kiedy używasz UNION
, zbiór danych jest dołączany, a wszystkie wiersze w dołączonej tabeli, które są dokładnie takie same jak wiersze w pierwszej tabeli, są usuwane. Jeśli chciałbyś dołączyć wszystkie wartości z drugiej tabeli, użyj UNION ALL
. Prawdopodobnie będziesz używał UNION ALL
znacznie częściej niż UNION
. W tym konkretnym przypadku nie ma duplikatów wierszy, więc UNION ALL
da takie same wyniki:
SELECT * FROM tutorial.crunchbase_investments_part1 UNION ALL SELECT * FROM tutorial.crunchbase_investments_part2
SQL ma ścisłe zasady dołączania danych:
- Obydwie tabele muszą mieć tę samą liczbę kolumn
- Kolumny muszą mieć te same typy danych w tej samej kolejności, co pierwsza tabela
Mimo że nazwy kolumn nie muszą być takie same, zazwyczaj są. Dzieje się tak dlatego, że większość przypadków, w których chciałbyś użyć UNION
, wiąże się z łączeniem różnych części tego samego zbioru danych (tak jak w tym przypadku).
Ponieważ piszesz dwie oddzielne instrukcje SELECT
, możesz traktować je inaczej przed dołączeniem. Na przykład, możesz filtrować je w różny sposób, używając różnych klauzul WHERE
.
Wyostrz swoje umiejętności SQL
Problem praktyczny
Napisz zapytanie, które dołącza dwa crunchbase_investments
powyższe zbiory danych (w tym zduplikowane wartości). Przefiltruj pierwszy zbiór danych tylko do firm o nazwach zaczynających się na literę „T”, a drugi do firm o nazwach zaczynających się na literę „M” (w obu przypadkach nie jest rozróżniana wielkość liter). Uwzględnij tylko kolumny company_permalink
, company_name
i investor_name
.
Wypróbuj Zobacz odpowiedź
Dla nieco większego wyzwania:
Problem praktyczny
Napisz zapytanie, które pokazuje 3 kolumny. Pierwsza wskazuje, z którego zbioru danych (część 1 czy 2) pochodzą dane, druga pokazuje status firmy, a trzecia jest zliczeniem liczby inwestorów.
Podpowiedź: będziesz musiał użyć zarówno tabeli tutorial.crunchbase_companies
, jak i tabeli investments. I będziesz chciał grupować według statusu i zbioru danych.
Wypróbuj to Zobacz odpowiedź
.
Dodaj komentarz