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:
- Filtrering i klausul
- Filtrering i WHERE
- Praksis problemer
Filtrering i klausul
Normalt, filtrering er behandlet i WHERE
bestemmelse, når de to tabeller har allerede tilmeldt sig. Det er dog muligt, at du måske vil filtrere en eller begge tabellerne, før du går sammen med dem., For eksempel vil du kun oprette kampe mellem tabellerne under visse omstændigheder.,
Brug Crunchbase data, så lad os tage endnu et kig på det LEFT JOIN
eksempel fra en tidligere lektion (denne gang vil vi tilføje en ORDER BY
klausul):
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
Undersøg følgende forespørgsel til den foregående og du vil se, at alt i tutorial.crunchbase_acquisitions
tabel han husker på, bortset fra den række som company_permalink
er '/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
Hvad der sker i ovenstående, er, at den betingede erklæring AND...
er vurderet før deltag opstår., Du kan tænke på det som en WHERE
klausul, der kun gælder for en af tabellerne. Du kan fortælle, at dette kun sker i en af tabellerne, fordi 1000memories permalink stadig vises i den kolonne, der trækker fra de andre-tabellen:
Filtrering i WHERE
Hvis du flytter det samme filter til WHERE
klausul, vil du bemærke, at det filter, der sker, efter at de tabeller, der er tilsluttet til., Resultatet er, at rækken 1000memories er forbundet til den oprindelige tabel, men så filtreres den helt ud (i begge tabeller) i WHERE
klausul før visning af resultater.
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
Du kan se, at 1000memories-linjen ikke returneres (det ville have været mellem de to fremhævede linjer nedenfor). Bemærk også, at filtrering iWHERE
– klausulen også kan filtrere null-værdier, så vi tilføjede en ekstra linje for at sikre, at nullerne blev inkluderet.,
Skærp dine s .l-færdigheder
For dette sæt øvelsesproblemer vil vi introducere et nyt datasæt: tutorial.crunchbase_investments
. Denne tabel er også hentet fra Crunchbase og indeholder meget af de samme oplysninger som tutorial.crunchbase_companies
data. Det det struktureret forskelligt, selvom: det indeholder en række pr investering. Virksomhed – det er endda muligt, at en investor kunne investere i det samme firma flere gange. Kolonnenavne er temmelig selvforklarende., Hvad der er vigtigt er, at company_permalink
tutorial.crunchbase_investments
tabel maps til permalink
tutorial.crunchbase_companies
tabel. Husk, at nogle tilfældige data er blevet fjernet fra denne tabel af hensyn til denne lektion.
det er meget sandsynligt, at du bliver nødt til at foretage en sonderende analyse på denne tabel for at forstå, hvordan du kan løse følgende problemer.,
Praksisproblem
Skriv en forespørgsel, der viser et virksomheds navn, “status” (findes i Selskabstabellen) og antallet af unikke investorer i det pågældende firma. Bestil efter antallet af investorer fra de fleste til færrest. Begræns til kun virksomheder i staten ne.York.
prøv det se svaret
praksis Problem
Skriv en forespørgsel, der viser investorer baseret på antallet af virksomheder, hvor de er investeret. Medtag en række for virksomheder uden investor, og bestil fra de fleste virksomheder til mindst.,
prøv det se svaret
Leave a Reply