■ はじめに
https://dk521123.hatenablog.com/entry/2023/01/16/000000
で、SQLの一般の集合演算について触れた。 今日、Snowflake 内に格納されているデータを検証するために 差集合を使ったので、その際のことなどを纏めておく
目次
【0】Snowflake の 集合演算子 【1】和(union) - UNION [ ALL ] 【2】差(difference) - MINUS / EXCEPT 【3】共通(intersection) - INTERSECT
【0】Snowflake の 集合演算子
* 以下の公式ドキュメントにまさにそれ用のページがある => さすが、、、
https://docs.snowflake.com/ja/sql-reference/operators-query
【1】和(union) - UNION [ ALL ]
* 2つ又は3つ以上の集合の全要素を集めること => UNION [ ALL ] を使う
https://docs.snowflake.com/ja/sql-reference/operators-query#union-all
構文
SELECT ... UNION [ ALL ] SELECT ...
【2】差(difference) - MINUS / EXCEPT
* 2つの集合で、 1つ目の集合にはあるけど、 2つ目の集合にはない => MINUS / EXCEPT を使う ★これを使った。★
https://docs.snowflake.com/ja/sql-reference/operators-query#minus-except
構文
SELECT ... MINUS SELECT ... -- EXCEPT でも同じことができる SELECT ... EXCEPT SELECT ... ;
サンプル
-- new_table と old_table 差集合を割り出すことで、 -- new_table にある新しい id を表示する SELECT id FROM new_table MINUS SELECT id FROM old_table ;
【3】共通(intersection) - INTERSECT
* 2つ又は3つ以上の集合で、同じ要素を求める => A と B という集合があった場合、 その共通部分を算出する(積集合) => INTERSECT を使う
https://docs.snowflake.com/ja/sql-reference/operators-query#intersect
構文
SELECT ... INTERSECT SELECT ...
関連記事
Snowflake ~ 基礎知識編 ~
https://dk521123.hatenablog.com/entry/2021/11/02/130111
Snowflake ~ 入門編 / Hello world ~
https://dk521123.hatenablog.com/entry/2021/11/22/212520
Snowflake ~ 基本編 / ゼロコピークローン ~
https://dk521123.hatenablog.com/entry/2021/11/27/134934
Snowflake ~ テーブルの簡易バックアップを考える ~
https://dk521123.hatenablog.com/entry/2022/11/07/224328
SQL ~ 関係演算 / 集合論 ~
https://dk521123.hatenablog.com/entry/2023/01/16/000000
SQL ~ 集合演算の応用 ~
https://dk521123.hatenablog.com/entry/2024/09/16/223305
差集合 ~ EXCEPT / MINUS etc ~
https://dk521123.hatenablog.com/entry/2021/05/26/142059
SQL ~ INTERSECT ~
https://dk521123.hatenablog.com/entry/2024/09/14/040940
テーブル結合 ~ 交差結合・CROSS JOIN ~
https://dk521123.hatenablog.com/entry/2011/12/21/000000
テーブルの結合 ~内部結合・INNER JOIN~
https://dk521123.hatenablog.com/entry/2010/02/05/131206
テーブルの結合 ~ 外部結合・LEFT/RIGHT/FULL JOIN ~
https://dk521123.hatenablog.com/entry/2012/05/06/212246
テーブルの結合 ~完全結合・Union / Union All ~
https://dk521123.hatenablog.com/entry/2010/03/28/162247
全く関係ないテーブルを結合することを考える
https://dk521123.hatenablog.com/entry/2021/09/16/185552