この記事は「データベーススペシャリスト資格に興味はあるが、どのようなものか?どう学ぶのか?」という方向けに、具体的な内容と私自身の挑戦ログをお伝えする。学び中の方や、これから学ぼうとされる方の参考になれば幸いだ。
今回はSQLにおける仮想テーブル利用(確認ドリル)について書く。
※注意点として、SQLはDBMSによって作法が異なる。この記事はGoogle Big Queryに準拠するものであることをお含みおき願いたい。
確認ドリル018
前回振り返り
- 「仮想テーブル」を扱う操作について「with句」「ビュー」「サブクエリ」を一通り学習できた。
- 今回も仮想テーブルの操作をまとめて復習するため、確認ドリルを解く。
問題
- [web_log]テーブルから
- セッションの総数(session)と
- ページビュー数の合計(sum_pageviews)を取得してください。
- セッションは、ユニークな[cid]と[session_count]の組み合わせと定義します。
- ページビューは、1レコードが1ページビューを表しています。
- 結果フィールドは、2フィールド1レコードになります。
SQL実践(テーブルの確認)
- まず、「[web_log]テーブルから」とあるのでこれを確認。
- 以下のとおり[cid],[session_count]等を持つテーブルであることが分かった。
SQLの実践(複数列のgroup by)
- 次に、「セッションの総数」について「セッションは、ユニークな[cid]と[session_count]の組み合わせと定義」とされている。
- group byは2つ以上の列で束ねることもできるので、この機能を利用する。
- 以下のように定義すれば「ユニークな[cid]と[session_count]の組み合わせ」が抽出できる。
SQLの実践(with句、サブクエリ)
- さて、上記のテーブルをwith句で仮想テーブルに一旦保管しておき(以下、赤枠)、セッションの数をcountで求めれば、セッションの総数(session)が求められる。抽出結果はサブクエリとして引き込めるようにする(以下、緑枠)。
- いっぽう、ページビュー数の合計(sum_pageviews)については、「ページビューは、1レコードが1ページビューを表しています」とのことなので、単純に元テーブルのレコード数をカウントすればよい。(以下、青枠)
考察
- SQLについて。「仮想テーブル」を扱う操作に関して「with句」「ビュー」「サブクエリ」を一通り学習できた。今回は復習のため確認ドリルを解いた。(group byで複数列を集計し、with句で仮想テーブルにし、編集結果をサブクエリで取得)
- 考察。あらためて日々の挑戦をブログ記事にして良かったと思える。自分にとっては知識の定着と保管になるし、同じように学んでいる方の役に立つかもしれないからだ。そして何よりアウトプットとフィードバックの循環が、自分の好奇心と視野を広げてくれるのが嬉しい。
考察のシンプル化と英訳(練習中)
- I feel writing daily challenges on my blog good. because the loop of output and feedback makes my curiosity and field of view wide.
- (私は自分のブログで毎日の挑戦を書くのが良いと感じています。出力とフィードバックのループが私の好奇心と視野を広くしているからです)
参考書籍
- 集中演習 SQL入門/木田和廣/株式会社インプレス
コメント