この記事は「データベーススペシャリスト資格に興味はあるが、どのようなものか?どう学ぶのか?」という方向けに、具体的な内容と私自身の挑戦ログをお伝えする。学び中の方や、これから学ぼうとされる方の参考になれば幸いだ。
今回は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 教科書が読めない子どもたち/新井紀子/東洋経済
コメント