初級編|基本機能の説明

複数テーブルを扱う ②集合演算子UNION,INTERSECT,EXCEPTの使い方

基本説明|UNIONとは

UNION句は、複数のデータ抽出の結果を結合したいときに用います。

結合といえば、他の記事で紹介したJOIN句による結合があったかと思います。
JOIN句との違いは、JOIN句がテーブル同士の結合であるのに対して、UNION句抽出した結果セット同士の結合であることです。

データの抽出については、こちらの記事をご覧ください。

テーブルからデータを取り出す


UNION句を使うときは、重ね合わせるデータセット同士が同じカラム構成であり、かつ各カラムの型が同じである必要があります。

UNION ALL/DISTINCTとは

UNION句には、“UNION ALL”“UNION DISTINCT”の2種類があります。
2つの違いは、重複行を削除するかどうかです。

UNION DICTINCT/UNION ALL

上の画像をご覧ください。

重複するデータ“C”に対して、UNION DISTINCT句では削除するという操作を行っていますが、UNION ALLでは削除せず結果同士を単純に重ね合わせたものを表示します。

UNION DISTINCTUNION ALLは状況に応じて使い分ける必要がありますが、UNION DISTINCTの方が重複データを削除するという操作が加わる分、処理手順が多くなります。
重複データが含まれていても問題はない場合や、明らかに重複データが含まれていないと思われる場合は、処理負担を小さくするためにもUNION ALLを使う方が良いでしょう。

Magiqでの設定方法

MagiqでのUNION句の設定方法は以下のようになります。今回は2つのデータセットを結合する場合ですが、3つ以上になる場合でも流れは変わりません。
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
【流れ】
①データセット1のテーブル、フィールド、条件の設定
②集合関数の選択
③データセット2のテーブル、フィールド、条件の設定
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

集合演算子の選択方法

①の条件設定まで終わらせた後、条件タブの左下にある+UNIONをクリックします。
すると、集合演算子の種類を選択できるようになります。UNION句以外の集合演算子についての説明は後述します。

+UNIONを選択

関数を選択

UNION DISTINCT/UNION ALL 例題

例題を通して、UNION DISTINCT/UNION ALLの使い分けや、Magiqにおける設定方法について確認しましょう。

2022年10月~2022年11月に販売されたデータを抽出する

【手順】

10月の販売データ、11月の販売データをそれぞれ抽出し、集合演算子を使って重ね合わせます。
今回は重複データを削除しては困る(同じものが売れていた場合もすべてのデータを表示させたい)ので、UNION ALL句を使うのが良いでしょう。

①データセット1のテーブル、フィールド、条件の設定
テーブル、フィールドを選択して、期間が2022年10月になるように条件を設定します。

②集合関数の選択
条件の下の+UNIONをクリックして、集合関数を選択します。今回は、UNION ALLを選びます。

③データセット2のテーブル、フィールド、条件の設定
11月分のデータセットについても①とほぼ同様に設定します。

これで、10月の販売データと11月の販売データがUNION ALLによって重ねられ、10~11月の販売データを抽出することができます。

その他の集合演算子|INTERSECT,EXCEPT

UNION以外の集合関数である、INTERSECT,EXCEPTについて紹介します。
Magiq上の設定方法は、UNIONの場合と変わりません。上記の【流れ】における②集合関数の選択で、使いたい集合関数を選んでください。

1.INTERSECT

INTERSECTは、複数のデータセットのうち共通して含まれているデータのみを抽出します。
UNIONと同じく、データセット同士が同じカラム構成であり、かつ各カラムの型が同じである必要があります。。

2.EXCEPT

EXCEPTは、最初に取得したデータセットのうち、二番目以降に取得したデータセットに含まれていないデータを取得します。以下のベン図を参照してください。
「1つ目のデータにのみ存在するデータだけを取り出す」というイメージを持つと、データセットの数が3つ以上になっても考えやすいです。

INTERSECT/EXCEPT

まとめ

SQLで使用される集合演算子について、

UNION…抽出したデータセット同士を重ね合わせる
INTERSECT…複数のデータセットのうち共通して含まれているデータのみを抽出する。
EXCEPT…最初に取得したデータセットのうち、二番目以降に取得したデータセットに含まれていないデータを取得する。
の三種類を紹介しました。データを抽出するシーンに合わせて関数を使い分けるようにしてください。
(参考:想定される利用シーン)


TOP