začíná zde? Tato lekce je součástí plné délky tutoriálu v používání SQL pro analýzu dat. Podívejte se na začátek.
V této lekci si vysvětlíme,
- Filtrování v bodě
- Filtrování v klauzuli where
- problémy
Filtrování v ustanovení
za normálních okolností, filtrování je zpracován v WHERE
klauzule jednou dva stoly již byly spojeny. Je to možné, i když možná budete chtít filtrovat jednu nebo obě tabulky před jejich připojením., Chcete například za určitých okolností vytvořit pouze zápasy mezi tabulkami.,
Pomocí údajů Crunchbase, pojďme se znovu podívat na LEFT JOIN
příklad z předchozí lekce (tentokrát přidáme ORDER BY
klauzule):
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
Porovnat následující dotaz k předchozí a uvidíte, že vše, co je v tutorial.crunchbase_acquisitions
tabulka se připojil na až na řádek, pro který company_permalink
'/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
Co se děje nad je, že podmíněný příkaz AND...
je vyhodnocen dříve než připojit vyskytuje., Můžete to považovat za klauzuli WHERE
, která se vztahuje pouze na jednu z tabulek. Můžete říct, že se to děje pouze v jedné z tabulek, protože 1000memories trvalý odkaz je stále zobrazen ve sloupci, který táhne z druhé tabulky:
Filtrování v klauzuli where
Pokud se pohybujete stejný filtr do WHERE
klauzule, můžete si všimnout, že filtr se stane po tabulkách jsou spojeny., Výsledkem je, že 1000memories řadě je připojil na původní tabulce, ale pak je odfiltrovány zcela (v obou tabulkách) v WHERE
klauzule před zobrazením výsledků.
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
můžete vidět, že 1000memories řádek není vrácen (to by byly mezi dva zvýrazněné řádky níže). Také si všimněte, že filtrování v WHERE
klauzule může také filtrovat hodnoty null, a tak jsme přidali další řádek, aby se ujistěte se, že obsahovat hodnoty null.,
Zostřit vaše SQL dovednosti
Pro tuto sadu problémů praxe, chystáme se zavést nový datový soubor: tutorial.crunchbase_investments
. Tato tabulka je také získána z Crunchbase a obsahuje většinu stejných informací jako data tutorial.crunchbase_companies
. Je to strukturované jinak, ačkoli: obsahuje jeden řádek na investici. Na jednu společnost může být více investic-je dokonce možné, že jeden investor by mohl investovat do stejné společnosti vícekrát. Názvy sloupců jsou docela samozřejmé., Co je důležité, je, že company_permalink
tutorial.crunchbase_investments
stolní mapy na permalink
tutorial.crunchbase_companies
tabulka. Mějte na paměti, že některá náhodná data byla z této tabulky odstraněna kvůli této lekci.
je velmi pravděpodobné, že budete muset provést průzkumnou analýzu na této tabulce, abyste pochopili, jak můžete vyřešit následující problémy.,
Practice Problem
napište dotaz, který zobrazuje název společnosti, „status“ (nalezený v tabulce společností) a počet jedinečných investorů v této společnosti. Pořadí podle počtu investorů od většiny po máloco. Omezte se pouze na společnosti ve státě New York.
Zkuste to Vidět odpověď
Praxe Problém
Napište dotaz, který vypíše investoři na základě počtu firem, do nichž investují. Zahrňte řádek pro společnosti bez investora a objednejte od většiny společností nejméně.,
Vyzkoušejte to podívejte se na odpověď
Leave a Reply