ここから始まりますか? このレッスンは、sqlを使用したデータ分析の完全なチュートリアルの一部です。 始まりをチェックアウト。
このレッスンでは、次のことを説明します。
- ON句でのフィルタリング
- WHERE句でのフィルタリング
- 練習問題
ON句でのフィルタリング
通常、フィルタリングはWHERE
句で処理されます。 それは可能ですが、結合する前にテーブルの一方または両方をフィルタリングすることもできます。, たとえば、特定の状況下でのみテーブル間で一致を作成する必要があります。,
Crunchbaseデータを使用して、以前のレッスンのLEFT JOIN
例をもう一度見てみましょう(今回はORDER BY
句を追加します):
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
次のクエリを前のクエリと比較すると、tutorial.crunchbase_acquisitions
テーブルは、company_permalink
が'/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
上記のことは、条件文AND...
結合が発生する前に評価されます。, これは、いずれかのテーブルにのみ適用されるWHERE
句と考えることができます。 1000memoriesパーマリンクが他のテーブルから引き出された列にまだ表示されているため、これはいずれかのテーブルでのみ発生していることがわかります。
WHERE句でのフィルタリング
同じフィルタをWHERE
句に移動すると、テーブルが結合された後にフィルタが発生することがわかります。, その結果、1000memories行は元のテーブルに結合されますが、結果を表示する前にWHERE
句で完全に(両方のテーブルで)除外されます。
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
1000memories行が返されないことがわかります(以下の二つの強調表示された行の間にあったでしょう)。 また、WHERE
句でフィルタリングすると、null値をフィルタリングすることもできるため、nullを含めるように余分な行を追加しました。,
SQLスキルを磨く
この練習問題のセットについては、新しいデータセットを導入します:tutorial.crunchbase_investments
。 このテーブルはCrunchbaseからもソースされており、tutorial.crunchbase_companies
データと同じ情報の多くが含まれています。 この構造が異なるものでは一行当たり投資である。 一つの投資家が同じ会社に複数回投資することさえ可能です。 列名はかなり自明です。, 重要なのは、company_permalink
のtutorial.crunchbase_investments
テーブルはpermalink
のtutorial.crunchbase_companies
テーブル。 このレッスンのために、この表から一部のランダムデータが削除されていることに注意してください。
以下の問題をどのように解決するかを理解するために、このテーブルに対して探索的分析を行う必要がある可能性が非常に高いです。,
練習問題
会社の名前、”ステータス”(会社テーブルにあります)、およびその会社の固有の投資家の数を示すクエリを記述します。 ほとんどから最も少ない投資家の数によって注文。 ニューヨーク州の企業のみに制限します。
それを試してみてください答えを見る
練習問題
彼らが投資されている会社の数に基づいて投資家をリストするクエリを書きます。 投資家のいない企業の行を含め、ほとんどの企業から少なくとも注文してください。,
それを試してみてください答えを見る
Leave a Reply