データベーススペシャリスト資格|2022年10月挑戦ログ 5月27日|SQLによる仮想テーブル利用(確認ドリル)

高度IT・基礎知識

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

今回はSQLにおける仮想テーブル利用(確認ドリル)について書く。

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

確認ドリル017

前回振り返り

  • 「仮想テーブル」を扱う操作について「with句」「ビュー」「サブクエリ」を一通り学習できた。
  • 今回も仮想テーブルの操作をまとめて復習するため、確認ドリルを解く。

問題

  • [customers]テーブルから
  • 4人以上のプレミアム顧客(is_premium=true)がいる都道府県における
  • もっとも高齢の顧客の情報を
  • 全カラム取り出してください
  • 結果テーブルは、7カラム1レコードになります。

SQL実践(テーブルの確認)

  • まず、「[customers]テーブルから」とあるのでこれを確認。
  • 以下のとおり7つのフィールド(属性・列)を持つテーブルであることが分かった。

SQLの実践(if句)

  • 次に、「4人以上のプレミアム顧客(is_premium=true)がいる都道府県における」について
  • 都道府県で束ねて、プレミアム顧客の数を調べ、4人以上かカウントすればよい。
  • ただ、プレミアム顧客の管理値はbool値なのでカウントし辛い。
  • そこで、まず以下のとおりif句を用いてプレミアム顧客の場合1を立てるフラグを用意する。(赤枠部分)

SQLの実践(サブクエリ、group by)

  • さて、上記のとおり「プレミアム顧客を判別するフラグを追加したテーブル」をサブクエリにして
  • group by で都道府県別に束ねて、プレミアム顧客数をカウントしてみる。
  • すると、都道府県別のプレミアム顧客数を管理するテーブルができた。

SQLの実践(絞り込み、サブクエリ、in句)

  • 次は、とてもシンプルに考えて上記テーブル(都道府県別のプレミアム顧客数)をサブクエリとして利用して、プレミアム顧客数が4人以上の都道府県を絞り込む。
  • そして、「該当する都道府県」の1列n行のリストを用意し、それを用いてin句で絞り込む。
  • 最後に、「最も高齢の顧客」なので生年月日で並び替えて(nullは除く)、最初の1つめの情報を取得すれば良い。
  • SQLは以下のとおり。サブクエリが複数使われているが、上でやってきた手順を愚直に囲んでいるだけなことが分かる。

SQLの実践(別解)

  • 「4人以上のプレミアム顧客(is_premium=true)がいる都道府県」について
  • group byのセットで用いる「集計関数の中にif句を入れられる(以下赤枠)」ことと、「having句でその結果を使って絞り込める(以下青枠)」ことを活用すると、以下のとおりシンプルにまとまる。
  • また、この結果をin句の絞り込み条件としてサブクエリにし、合致するレコードを仮想テーブルとしてwith句で保管、という別解も勿論可能である。

考察

  • SQLについて。「仮想テーブル」を扱う操作に関して「with句」「ビュー」「サブクエリ」を一通り学習できた。今回は復習のため確認ドリルを解いた。(if句でフラグ追加し、group byで集計し、結果をサブクエリで束ねてin句の絞り込み条件に使用)
  • 考察。「日常の悩みを、先人の知恵を最大限使い、自分で考えて解決したい」方に「ふだんづかいの倫理学/平尾 昌宏/晶文社」はおすすめだ。倫理学の基礎と実用法のバランスが丁度良く、ユーモア溢れる文章で一気に読ませてくれるからだ。

考察のシンプル化と英訳(練習中)

  • I believe the book with solid principles and practical method good. it’s better if it has humor.
  • (確かな原則と実践方法を兼ね備えた本は良書だと思います。ユーモアもあればなお良いです)

参考書籍

  • 集中演習 SQL入門/木田和廣/株式会社インプレス
  • ふだんづかいの倫理学/平尾 昌宏/晶文社

コメント

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