Hier beginnen? Deze les maakt deel uit van een volledige tutorial in het gebruik van SQL voor Data-analyse. Kijk naar het begin.
in deze les behandelen we:
- het commando Left JOIN
- oefenproblemen
het commando LEFT JOIN
laten we beginnen met het uitvoeren van een INNER JOIN
op de Crunchbase-dataset en een kijkje nemen op de resultaten. We zullen gewoon kijken naar company-permalink
in elke tabel, evenals een paar andere velden, om een idee te krijgen van wat er daadwerkelijk wordt samengevoegd.,
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
u kunt merken dat” 280 North ” tweemaal voorkomt in deze lijst. Dat komt omdat het twee regels heeft in detutorial.crunchbase_acquisitions
tabel, die beide worden samengevoegd met detutorial.crunchbase_companies
tabel.,
Probeer nu die query uit te voeren als een 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
u kunt zien dat de eerste twee bedrijven uit de vorige resultaatset, #waywire en 1000memories, naar beneden worden geduwd door een aantal resultaten die null-waarden bevatten in de acquisitions_permalink
en acquired_date
velden.,
Dit komt omdat de opdracht LEFT JOIN
de database vertelt om alle rijen in de tabel in de FROM
clausule te retourneren, ongeacht of ze overeenkomsten hebben in de tabel in de LEFT JOIN
clausule.,
Scherper uw SQL vaardigheden
U kunt verkennen van de verschillen tussen een LEFT JOIN
en een JOIN
door het oplossen van deze praktijk problemen:
de Praktijk Probleem
het Schrijven van een query waarmee een binnenste join tussen de tutorial.crunchbase_acquisitions
tabel en de tutorial.crunchbase_companies
tabel, maar in plaats van notering afzonderlijke rijen, telt het aantal niet-lege rijen in elke tabel.,
probeer het uit Zie het antwoord
Oefenprobleem
Wijzig de zoekopdracht hierboven om een LEFT JOIN
te zijn. Let op het verschil in resultaten.
probeer het uit Zie het antwoord
nu je een idee hebt van hoe links joins werken, probeer dan dit moeilijkere aggregatieprobleem:
Oefenprobleem
Tel het aantal unieke bedrijven (dubbeltelling bedrijven niet) en unieke verworven bedrijven per staat., Geen resultaten waarvoor er geen staat gegevens, en volgorde van het aantal verworven bedrijven van hoogste naar laagste.
probeer het uit Zie het antwoord