starter her? Denne lektion er en del af en fuld længde tutorial i at bruge s .l til dataanalyse. Tjek begyndelsen.
I denne lektion vil vi dække:
- LEFT JOIN kommando
- Praksis problemer
LEFT JOIN kommando
Lad os starte med at køre en INNER JOIN
på Crunchbase datasæt og tage et kig på resultaterne. Vi vil bare se på company-permalink
i hver tabel, samt et par andre felter, for at få en fornemmelse af, hvad der faktisk bliver tilsluttet.,
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 JOIN tutorial.crunchbase_acquisitions acquisitions ON companies.permalink = acquisitions.company_permalink
Du vil måske bemærke, at “280 North” vises to gange i denne liste. Det skyldes, at det har to poster i tutorial.crunchbase_acquisitions
tabel, som begge er forbundet til tutorial.crunchbase_companies
tabel.,
Nu kan du prøve at køre forespørgslen som en LEFT JOIN
:
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
Du kan se, at de første to selskaber fra det tidligere resultat, #waywire og 1000memories, er skubbet ned på siden af en række resultater, der indeholder null-værdier i acquisitions_permalink
og acquired_date
felter.,
Dette er fordi LEFT JOIN
kommando fortæller database til at returnere alle rækker i tabellen i FROM
bestemmelse, uanset om eller ikke de har kampe i tabellen i LEFT JOIN
klausul.,
Skærpe din SQL-færdigheder
Du kan udforske forskellene mellem en LEFT JOIN
og JOIN
ved at løse disse praktiske problemer:
Praksis Problem
Skriv en forespørgsel, der udfører en inner join mellem tutorial.crunchbase_acquisitions
tabelposition > > og tutorial.crunchbase_companies
tabel, men i stedet en liste over de enkelte rækker, tæller antallet af ikke-null rækker i hver tabel.,
prøv det se svaret
Øvelsesproblem
Rediger forespørgslen ovenfor for at være enLEFT JOIN
. Bemærk forskellen i resultater.
Prøv det, Se svar
Nu, at du har fået en fornemmelse af, hvordan venstre slutter virker, kan du prøve det sværere sammenlægning problem:
Praksis Problem
Tælle antallet af unikke virksomheder (du skal ikke dobbelt-tæller virksomheder) og unikke erhvervede virksomheder med staten., Medtag ikke resultater, for hvilke der ikke er nogen statsdata, og bestil efter antallet af erhvervede virksomheder fra højeste til laveste.
prøv det se svaret