【Snowflake】Snowflake ~ 関係演算 / 集合論 ~

■ はじめに

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