この記事は「データベーススペシャリスト資格に興味はあるが、どのようなものか?どう学ぶのか?」という方向けに、具体的な内容と私自身の挑戦ログをお伝えする。学び中の方や、これから学ぼうとされる方の参考になれば幸いだ。今回はSQL(確認ドリル)について書く。(SQLはGoogle Big Queryに準拠)
問題062(SQL確認ドリル)
問題文
- 「web_log」テーブルの「page」カラムに格納されている
- 「/prod/prod_id_[数字]/」の[数字]部分は、商品ID(product_id)を示しています。
- 「page」から「数字」だけを抜き出し、「product_id」カラムとして取得してください。
- 結果テーブルは「page」と「product_id」の2カラムとし、
- 「date_time」の小さい順に並べて、5レコードに絞り込んで表示します。
instr,substrのおさらい
- instrは特定の文字列の出現位置を取得できる。
- 今回は”prod_id”をふくむ「page」カラムを特定する。(赤枠)
- substrは引数で指定した開始位置から、おなじく引数で指定した文字数分を取得できる。
- 今回は抜き出したい[数字]の直前に2つめの”_”が来るので、これを開始位置とした。(青枠)
- また、抜き出したい[数字]の直後に3つめの”/”が来るので、ここまでを取得範囲とした。(緑枠)
- 具体的には以下のとおり。
正規表現を用いた別解
- 正規表現とextractを用いたほうがスマートに回答できる。
- 具体的には「REGEXP_EXTRACT(page, r”^/prod/prod_id_(\d\d?)/”)」と記述。
- ポイントは”?”であり、これは任意の数字が”あるかもしれない”を示すもの。
- それ以外の記号、”^”(始まり)、”()”(抽出箇所)、”\d”(任意の数字)などは汎用的なもの。
考察
- データベーススペシャリスト資格について。今回はSQLの確認ドリルを解いた。お題は「web_logテーブル内のpageカラムにおいて、”/prod/prod_id_[数字]/”という記載がある場合、[数字]部分を抽出する」だ。instr,substrを用いて記述した。
- 考察。私の妻は放送大学で学び直し中なのだが、今日「心理学統計法」の演習問題について相談を受けた。お題は分散、偏相関係数、t値、F値の計算などだ。「夫婦で同じ問題を一緒に解ける」という経験はとても楽しいものであり、学び直しの醍醐味と言えそうだ。
考察のシンプル化と英訳(練習中)
- I feel relearning with couple is precious experience.
- (夫婦での再学習は、貴重な経験だと思います)
参考資料
- 集中演習 SQL入門/木田和廣/株式会社インプレス
- 心理学統計法/清水 裕士/一般財団法人 放送大学教育振興会
コメント