SQL UNION
On 11月 16, 2021 by adminここから始める? このレッスンは、データ分析にSQLを使用するための長編チュートリアルの一部です。
- The SQL UNION operator
- Practice problems
The SQL UNION operator
SQL結合では、2つのデータセットを並べて結合できますが、UNION
では、データセットをもう1つ上に積み重ねることができます。 言い換えれば、UNION
は2つの別々のSELECT
ステートメントを書き、1つのステートメントの結果をもう1つのステートメントの結果と同じテーブルに表示させることができるのです。 次のクエリは、クエリの最初の部分からすべての結果を表示し、次に同じテーブルの2番目の部分からすべての結果を表示します。
SELECT * FROM tutorial.crunchbase_investments_part1 UNION SELECT * FROM tutorial.crunchbase_investments_part2
UNION
は異なる値のみを追加することに注意してください。 具体的には、UNION
を使用すると、データセットが追加され、最初のテーブルの行とまったく同じ行が追加されたテーブルの中にある場合は、その行が削除されます。 もし、2番目のテーブルのすべての値を追加したい場合は、UNION ALL
を使用する。 UNION ALL
は UNION
よりもはるかに頻繁に使用されるであろう。 この場合、重複する行はないので、UNION ALL
は同じ結果を生成します。
SELECT * FROM tutorial.crunchbase_investments_part1 UNION ALL SELECT * FROM tutorial.crunchbase_investments_part2
SQL には、データを追加するための厳格なルールがあります:
- 両方のテーブルには同じ数の列がなければなりません
- 列には最初のテーブルと同じデータ型と順序がなければなりません
列名は必ずしも同じでなければなりませんが、通常は同じになることがわかっています。 これは、UNION
を使用するほとんどの場合、(今回のように)同じデータセットの異なる部分をつなぎ合わせることになるからです。
2 つの別々の SELECT
文を書いているため、追加する前にそれらを異なる方法で扱うことができます。 たとえば、異なるWHERE
句を使用して異なる方法でフィルタリングすることができます。
Sharpen your SQL skills
練習問題
上記の2つのcrunchbase_investments
データセット(重複する値を含む)を追加するクエリーを記述します。 最初のデータセットを「T」で始まる名前の企業だけにフィルタリングし、2番目のデータセットを「M」で始まる名前の企業にフィルタリングする(両方とも大文字と小文字を区別しない)。 company_permalink
列、company_name
列、investor_name
列のみを含める。
試してみる 答えを見る
もう少し挑戦する場合:
練習問題
3列を表示するクエリーを書きます。 最初の列は、データがどのデータセット(パート1または2)から来たものかを示し、2番目は会社の状態を示し、3番目は投資家の数のカウントを示します。
ヒント: 投資テーブルだけでなく、tutorial.crunchbase_companies
テーブルも使用する必要があります。 そして、ステータスとデータセットでグループ化したいと思うでしょう。
試してみる 答えを見る
コメントを残す