zaczynając tutaj? Ta lekcja jest częścią pełnowymiarowego samouczka na temat używania SQL do analizy danych. Spójrz na początek.
w tej lekcji omówimy:
- filtrowanie w klauzuli ON
- filtrowanie w klauzuli WHERE
- problemy praktyczne
filtrowanie w klauzuli ON
Zwykle filtrowanie jest przetwarzane w klauzuli WHERE
po połączeniu obu tabel. Jest to możliwe, ale możesz chcieć przefiltrować jedną lub obie tabele przed dołączeniem do nich., Na przykład, chcesz tworzyć mecze między tabelami tylko w pewnych okolicznościach.,
korzystając z danych Crunchbase, przyjrzyjmy się jeszcze raz przykładowi LEFT JOIN
z wcześniejszej lekcji (tym razem dodamy klauzulę ORDER BY
):
SELECT companies.permalink AS companies_permalink, companies.name AS companies_name, acquisitions.company_permalink AS acquisitions_permalink, acquisitions.acquired_at AS acquired_date FROM tutorial.crunchbase_companies companies LEFT JOIN tutorial.crunchbase_acquisitions acquisitions ON companies.permalink = acquisitions.company_permalink ORDER BY 1
Porównaj poniższe zapytanie z poprzednim, a zobaczysz, że wszystko w tabela została połączona z wyjątkiem wiersza, dla którego company_permalink
jest '/company/1000memories'
:
SELECT companies.permalink AS companies_permalink, companies.name AS companies_name, acquisitions.company_permalink AS acquisitions_permalink, acquisitions.acquired_at AS acquired_date FROM tutorial.crunchbase_companies companies LEFT JOIN tutorial.crunchbase_acquisitions acquisitions ON companies.permalink = acquisitions.company_permalink AND acquisitions.company_permalink != '/company/1000memories' ORDER BY 1
to, co dzieje się powyżej, to Instrukcja warunkowa AND...
jest obliczane zanim nastąpi połączenie., Można to traktować jako klauzulę WHERE
, która dotyczy tylko jednej z tabel. Możesz powiedzieć, że dzieje się to tylko w jednej z tabel, ponieważ link permalink 1000memories jest nadal wyświetlany w kolumnie, która pobiera z drugiej tabeli:
filtrowanie w klauzuli WHERE
Jeśli przeniesiesz ten sam filtr do klauzuliWHERE
, zauważysz, że filtr dzieje się po tym, jak tabele są dołączył., Wynikiem jest to, że wiersz 1000memories jest połączony z oryginalną tabelą, ale następnie jest całkowicie odfiltrowany (w obu tabelach) w klauzuli WHERE
przed wyświetlaniem wyników.
SELECT companies.permalink AS companies_permalink, companies.name AS companies_name, acquisitions.company_permalink AS acquisitions_permalink, acquisitions.acquired_at AS acquired_date FROM tutorial.crunchbase_companies companies LEFT JOIN tutorial.crunchbase_acquisitions acquisitions ON companies.permalink = acquisitions.company_permalink WHERE acquisitions.company_permalink != '/company/1000memories' OR acquisitions.company_permalink IS NULL ORDER BY 1
możesz zobaczyć, że linia 1000memories nie jest zwracana (byłaby między dwoma podświetlonymi liniami poniżej). Zauważ również, że filtrowanie w klauzuli WHERE
może również filtrować wartości null, więc dodaliśmy dodatkową linię, aby upewnić się, że zawierają null.,
wyostrz swoje umiejętności SQL
W Tym Zestawie problemów praktycznych wprowadzimy nowy zestaw danych:tutorial.crunchbase_investments
. Ta tabela jest również pozyskiwana z Crunchbase i zawiera wiele z tych samych informacji, co dane tutorial.crunchbase_companies
. Jest to jednak inna struktura: zawiera jeden wiersz na inwestycję. W każdej firmie może być wiele inwestycji—jest nawet możliwe, że jeden inwestor może zainwestować w tę samą firmę wiele razy. Nazwy kolumn są dość oczywiste., Ważne jest to, że company_permalink
w tutorial.crunchbase_investments
tabela mapuje do permalink
w tutorial.crunchbase_companies
tabela. Należy pamiętać, że niektóre losowe DANE zostały usunięte z tej tabeli ze względu na tę lekcję.
jest bardzo prawdopodobne, że będziesz musiał wykonać analizę eksploracyjną na tej tabeli, aby zrozumieć, w jaki sposób możesz rozwiązać następujące problemy.,
problem praktyczny
napisz zapytanie, które pokazuje nazwę firmy, „status” (znaleziony w tabeli spółek) i liczbę unikalnych inwestorów w tej firmie. Kolejność według liczby inwestorów od największej do najmniejszej. Ograniczenie tylko do firm w stanie Nowy Jork.
Wypróbuj Zobacz odpowiedź
problem praktyczny
napisz zapytanie, które wymienia inwestorów na podstawie liczby firm, w które są inwestowani. Dołącz wiersz dla firm bez inwestora, a kolejność od większości firm do najmniej.,
Wypróbuj Zobacz odpowiedź
Leave a Reply