începând de aici? Această lecție face parte dintr-un tutorial complet în utilizarea SQL pentru analiza datelor. Uită-te la început.
În această lecție vom acoperi:
- Filtrare în clauza
- Filtrare în cazul în CARE clauza
- probleme de Practică
Filtrare în clauza
în mod Normal, filtrarea este procesat în WHERE
clauză de o dată la două mese au fost deja s-au alăturat. Este posibil, totuși, să doriți să filtrați una sau ambele mese înainte de a le alătura., De exemplu, doriți doar să creați potriviri între mese în anumite circumstanțe.,
Utilizarea datelor Crunchbase, haideți să aruncăm o privire la LEFT JOIN
exemplu de la o lecție mai devreme (de data aceasta vom adăuga un ORDER BY
clauza):
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
Compara următoarea interogare cu cel anterior și veți vedea că totul în tutorial.crunchbase_acquisitions
masă s-au alăturat în afară de rând pentru care company_permalink
este '/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
Ce se întâmplă de mai sus este că condiționată declarație AND...
este evaluată înainte de a se alătura apare., Vă puteți gândi la aceasta ca la o clauză WHERE
care se aplică numai unuia dintre tabele. Vă pot spune că asta se întâmplă doar în una dintre mese, deoarece 1000memories permalink este încă afișat în coloana care trage din alt tabel:
Filtrare în cazul în CARE clauza
Dacă vă mutați la fel de filtru la WHERE
clauză, veți observa că filtrul se întâmplă după tabelele sunt unite., Rezultatul este că 1000memories rând este asociat pe masa inițială, dar apoi este filtrat în întregime (în ambele tabele) în WHERE
clauza înainte de afișarea rezultatelor.
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
puteți vedea că 1000memories linie nu este returnat (ar fi fost între cele două linii marcate mai jos). De asemenea, rețineți că filtrarea în clauza WHERE
poate filtra și valorile nule, așa că am adăugat o linie suplimentară pentru a ne asigura că includem nulurile.,
Ascuți abilitățile SQL
Pentru acest set de probleme de practică, suntem de gând să introducă un nou set de date: tutorial.crunchbase_investments
. Acest tabel este, de asemenea, provenind din Crunchbase și conține o mare parte din aceleași informații ca și tutorial.crunchbase_companies
date. Acesta este structurat în mod diferit, deși: acesta conține un rând pe investiție. Pot exista mai multe investiții pe companie—este chiar posibil ca un investitor să investească în aceeași companie de mai multe ori. Numele coloanelor sunt destul de explicative., Ceea ce este important este că company_permalink
în tutorial.crunchbase_investments
masa maps pentru permalink
în tutorial.crunchbase_companies
masă. Rețineți că unele date aleatorii au fost eliminate din acest tabel de dragul acestei lecții.este foarte probabil că va trebui să faceți o analiză exploratorie pe acest tabel pentru a înțelege cum ați putea rezolva următoarele probleme.,
problemă practică
scrieți o interogare care arată numele unei companii, „status” (găsit în tabelul companii) și numărul de investitori unici din acea companie. Comandați după numărul de investitori de la cele mai multe la cele mai puține. Limita la numai companiile din statul New York.
încercați să vedeți răspunsul
problemă practică
scrieți o interogare care listează investitorii în funcție de numărul de companii în care sunt investiți. Includeți un rând pentru companiile fără investitor și comandați de la majoritatea companiilor la cel puțin.,
încercați să vedeți răspunsul
Leave a Reply