Ab hier? Diese Lektion ist Teil einer ausführlichen Anleitung zur Verwendung von SQL für die Datenanalyse. Schauen Sie sich den Anfang an.
In dieser Lektion behandeln wir:
- Filterung in der ON-Klausel
- Filterung in der WHERE-Klausel
- Übungsprobleme
Filterung in der ON-Klausel
Normalerweise wird die Filterung in der WHERE
– Klausel verarbeitet, sobald die beiden Tabellen bereits verbunden sind. Es ist jedoch möglich, dass Sie eine oder beide Tabellen filtern möchten, bevor Sie sie verbinden., Sie möchten beispielsweise nur unter bestimmten Umständen Übereinstimmungen zwischen den Tabellen erstellen.,
Mit Crunchbase-Daten haben, werfen wir einen Blick auf die LEFT JOIN
Beispiel aus einer früheren Lektion (dieses mal fügen wir ein ORDER BY
– Klausel):
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
Vergleichen Sie die folgende Abfrage aus, um die vorherigen, und Sie werden sehen, dass alles, was in der tutorial.crunchbase_acquisitions
Tabelle beigetreten war, außer für die Zeile für die company_permalink
von '/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
Was passiert, von oben ist, dass die bedingte Anweisung AND...
wird ausgewertet, bevor die Verknüpfung Auftritt., Sie können es sich als WHERE
– Klausel vorstellen, die nur für eine der Tabellen gilt. Sie können feststellen, dass dies nur in einer der Tabellen geschieht, da der Permalink 1000memories weiterhin in der Spalte angezeigt wird, die aus der anderen Tabelle abgerufen wird:
Filterung in der WHERE-Klausel
Wenn Sie denselben Filter in die WHERE
– Klausel verschieben, werden Sie feststellen, dass der Filter nach dem Verbinden der Tabellen auftritt., Das Ergebnis ist, dass die Zeile 1000memories mit der ursprünglichen Tabelle verknüpft ist, dann jedoch vollständig (in beiden Tabellen) in der Klausel WHERE
herausgefiltert wird, bevor Ergebnisse angezeigt werden.
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
Sie können sehen, dass die Zeile 1000memories nicht zurückgegeben wird (sie wäre zwischen den beiden markierten Zeilen unten gewesen). Beachten Sie auch, dass das Filtern in der WHERE
– Klausel auch Nullwerte filtern kann, sodass wir eine zusätzliche Zeile hinzugefügt haben, um sicherzustellen, dass die Nullen enthalten sind.,
Schärfen Sie Ihre SQL-Kenntnisse
Für diese Reihe von Übungsproblemen werden wir einen neuen Datensatz einführen: tutorial.crunchbase_investments
. Diese Tabelle stammt ebenfalls von Crunchbase und enthält dieselben Informationen wie die tutorial.crunchbase_companies
– Daten. Es ist jedoch anders strukturiert: Es enthält eine Zeile pro Investition. Es kann mehrere Investitionen pro Unternehmen geben—es ist sogar möglich, dass ein Investor mehrmals in dasselbe Unternehmen investieren kann. Die Spaltennamen sind ziemlich selbsterklärend., Wichtig ist, dass company_permalink
in der Tabelle tutorial.crunchbase_investments
permalink
in der Tabelle tutorial.crunchbase_companies
zugeordnet ist. Beachten Sie, dass für diese Lektion einige zufällige Daten aus dieser Tabelle entfernt wurden.
Es ist sehr wahrscheinlich, dass Sie eine explorative Analyse dieser Tabelle durchführen müssen, um zu verstehen, wie Sie die folgenden Probleme lösen können.,
Übungsproblem
Schreiben Sie eine Abfrage, die den Namen eines Unternehmens, den „Status“ (in der Tabelle Companies) und die Anzahl der eindeutigen Investoren in diesem Unternehmen anzeigt. Bestellen Sie nach der Anzahl der Anleger von den meisten bis zu den wenigsten. Beschränken Sie sich auf nur Unternehmen im Bundesstaat New York.
Probieren Sie es aus Siehe die Antwort
Übungsproblem
Schreiben Sie eine Abfrage, die Investoren basierend auf der Anzahl der Unternehmen auflistet, in die sie investiert sind. Fügen Sie eine Zeile für Unternehmen ohne Investor hinzu und bestellen Sie von den meisten Unternehmen zu mindestens.,
Probieren Sie es aus Siehe die Antwort
Leave a Reply