データベーススペシャリスト資格|2022年10月挑戦ログ 5月10日|SQLによるテーブルの集合演算(1/3)

高度IT・基礎知識

この記事は「データベーススペシャリスト資格に興味はあるが、どのようなものか?どう学ぶのか?」という方向けに、具体的な内容と私自身の挑戦ログをお伝えする。学び中の方や、これから学ぼうとされる方の参考になれば幸いだ。

今回はSQLによるテーブルの集合演算(1/3)について書く。

※注意点として、SQLはDBMSによって作法が異なる。この記事はGoogle Big Queryに準拠するものであることをお含みおき願いたい。

集合演算とは

前回振り返り

  • 実務では「扱いやすさ」の観点から複数テーブルに分かれているが、分析においては「幅広く見る」ためにテーブルをつなげる必要がある。
  • 5月7日~5月9日を通じて「異なる性質(列)で分けたデータ」を、“横”につなげる操作「結合(join)」の基本・応用・発展の学習が完了した。
  • 今回は「一定期間ごとに集計されたレコード(行)」を、“縦”につなげる操作「集合演算(union)」の基本を学ぶ。

集合演算とは

  • 集合とは一般的には「意味のあるまとまり」
  • SQLにおいては、日別や月別など、同じスキーマ(列・見出し)で構成されたテーブル(集合)を“縦”につなげる操作を「集合演算」と呼ぶ
  • 集合演算には足し算(和集合)、掛け算(積集合)、引き算(差集合)の3パターンがある。

集合演算のイメージ

和集合

  • 複数のテーブルの値を、単純に足し合わせたものは和集合と呼ぶ。
  • たとえば、2つのテーブル(集合)があるとする。
  • そして、テーブル①は「a,b,c」、テーブル②は「c,d,e」と各々値を持っているとする。
  • このとき、テーブル①と②の和集合は「a,b,c,c,d,e」となる。
  • なお、「値の重複を許可しない」演算も可能で、その場合は「a,b,c,d,e」となる。
  • 試験対策。和集合の記法は「U」となる。

積集合

  • 複数のテーブルの値のうち、共通(重複)している部分を積集合と呼ぶ。
  • たとえば、テーブル①は「a,b,c」、テーブル②は「c,d,e」と各々値を持っているとする。
  • このとき、テーブル①と②の積集合は「c」のみとなる。
  • 試験対策。和集合の記法は「×」となる。

差集合

  • 複数のテーブルにおいて、テーブル①からテーブル②の値を差し引いた部分を差集合と呼ぶ。
  • たとえば、テーブル①は「a,b,c」、テーブル②は「c,d,e」と各々値を持っているとする。
  • このとき、テーブル①-②の差集合は「a,b」のみとなる。
  • なお、差集合のみ計算順により結果が変わる
  • 具体的には、テーブル②ー①と計算した際の差集合は「d,e」となる。
  • 試験対策。和集合の記法は「-」となる。

和集合のSQL操作

和集合のSQL構文

まず、和集合のSQL構文は「union」を用いる。具体的には以下のとおり。

  • select フィールド名 from テーブル名①
  • union distinct (または union all)
  • select フィールド名 from テーブル名②

なお注意点は以下のとおり。

  • ふたつのselect句で指定するフィールドの種類・数・順序を完全一致させる必要がある。
  • これは前述のとおり、集合演算自体が日別や月別など、同じスキーマ(列・見出し)で構成されたテーブル(集合)を”縦”につなげる操作だから。

和集合のSQL実例

  • 実際にテーブルを用意し、SQLの集合演算を行ってみる。
  • たとえば、ある魚屋の売上表(日付、商品名、個数)について、1月分(small_jan)と2月分(small_feb)があるとする。
  • このとき、2つのテーブルの和集合は以下となる。
  • なお注意点として、「union all」部分を「union distinct」(重複を許可しない)にしても結果は変わらない。「重複」とは「selecet句で取得している全フィールドの内容が全て一致する」という意味になるから。

考察

  • SQLについて。実務では「扱いやすさ」の観点から複数テーブルに分かれているが、分析においては「幅広く見る」ためにテーブルをつなげる必要がある。今回は「一定期間ごとの集計レコード」を”縦”につなげる操作「集合演算」の基本を学んだ。
  • 考察。とくにSQLやデータ分析の学習においては「基本」が重要と感じる。なぜなら、SQLは製品ごとローカルルールが多く、データ分析は数学の難解な言葉を用いるので、全てを覚えるのは難しいが、基本を抑えていれば応用できるから
  • たとえば「和集合とは、期間ごと集計レコードを”縦”につなげること」が基本。SQLの実務では「union句を用いる際は、select句で指定する全フィールドの完全一致が条件」、試験問題では「次数が同じで、対応する属性のドメインが同じ」と表現されるが、すべて同じ意味。
  • よって「上に抽象概念(基本)、下に具体事例(応用)があるピラミッド」構造において、「自分はいま、どこを学んでいるか」を意識することは重要。それにより「一を聞いて十を知る」能力を磨けるため。(AIとの差別化ポイント。AIは「百や千を聞いて、一を予測する」ものだから)

参考書籍

  • 集中演習 SQL入門/木田和廣/株式会社インプレス
  • データベーススペシャリスト2022年版/三好康之/翔泳社
  • おうちで学べるデータベースのきほん/ミック,木村明治/翔泳社
  • AI vs 教科書が読めない子どもたち/新井紀子/東洋経済

コメント

タイトルとURLをコピーしました