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

高度IT・基礎知識

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

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

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

和集合の他パターン

前回振り返り

  • SQLについて。実務では「扱いやすさ」の観点から複数テーブルに分かれているが、分析においては「幅広く見る」ためにテーブルをつなげる必要がある。
  • 前回は「集合演算」の基本を学んだ。これは「一定期間ごとの集計レコード」を”縦”につなげる操作。
  • 今回は応用を学ぶ。具体的には和集合の他パターンや、積集合・差集合

和集合の他パターン

  • 実際にテーブルを用意し、SQLの集合演算を行ってみる。
  • たとえば、ある魚屋の売上表(日付、商品名、個数)について、1月分(small_jan)と2月分(small_feb)があるとする。
  • 前回、全ての列を対象にunionした際は、「union all(そのまま足し合わせる)」でも「union distinct(重複を許可しない)」でも結果は変わらなかった。
  • そこで今回は、以下のように2つのテーブルの和集合で「union distinct」(重複を許可しない)にして結果が変わるパターンを試す。
  • 以下のとおり、和集合の対象列を「product_name」に限定することで、完全に重複するレコードは許可されない。
  • 結果として1月と2月に販売された、ユニークな、つまり重複を取り除いた商品リストか完成した。

積集合

基本的な考え方(再掲)

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

積集合のSQL構文

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

  • select フィールド名 from テーブル名①
  • intersect distinct
  • select フィールド名 from テーブル名②

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

  • ふたつのselect句で指定するフィールドの種類・数・順序を完全一致させる必要がある。
  • また、積集合の対象となるのは「selecet句で取得している全フィールドの内容が全て一致する」もののみ。和集合で言う「重複」に該当する部分。

積集合のSQL実例

  • 実際にテーブルを用意し、SQLの集合演算を行ってみる。
  • 先ほど示した、ある魚屋の売上表(日付、商品名、個数)の1月分(small_jan)と2月分(small_feb)を用いる。
  • このとき、積集合の対象列を「product_name」に限定すれば、以下のとおり重複部分を取得できる。

差集合

基本的な考え方(再掲)

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

差集合のSQL構文

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

  • select フィールド名 from テーブル名①
  • except distinct
  • select フィールド名 from テーブル名②

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

  • ふたつのselect句で指定するフィールドの種類・数・順序を完全一致させる必要がある。

差集合のSQL実例

  • 実際にテーブルを用意し、SQLの集合演算を行ってみる。
  • 先ほど示した、ある魚屋の売上表(日付、商品名、個数)の1月分(small_jan)と2月分(small_feb)を用いる。
  • 以下のとおり、差集合の順番を入れ替えると結果が変わることもわかる。

考察

  • SQLについて。分析においては、実務上複数に分かれているテーブルをつなげる必要がある。
  • 今回は「一定期間ごとの集計レコード」を”縦”につなげる操作「集合演算」の応用を学んだ。具体的には和集合の他パターンや、積集合・差集合。
  • 考察。SQLはローカルルールが多く、データ分析は数学の難解な言葉を用いるので、これらを全て覚えるのではなく、基本を抑えて応用する「一を聞いて十を知る」戦略を取りたい。
  • そこで重要なのは文章の意味・真意を読み取る「読解力」。資格学習はこの素養が必須なため、常に意識して研鑽したい。

参考書籍

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

コメント

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