この記事は「データベーススペシャリスト資格に興味はあるが、どのようなものか?どう学ぶのか?」という方向けに、具体的な内容と私自身の挑戦ログをお伝えする。学び中の方や、これから学ぼうとされる方の参考になれば幸いだ。今回は知識およびSQL(確認ドリル)について書く。(SQLはGoogle Big Queryに準拠)
また、考察においてキャリアコンサルタント資格の挑戦ログについても記述する。
DB学習方針(一部再掲)
対策MUSTのもの
- 午前2対策、TAC講義動画全て視聴⇒完了⇒過去ブログ記事も参考に、知識ざっと見直し(試験1週間前まで1日少しづつ)
- 午前2対策、TACテキストの問題全て完答⇒3ラリー目完了。ざっと見直し。このとき、過去SAなども参考に心構えは整理しておく(試験1週間前まで1日少しづつ、1週間前、直前)
- 午前2対策、過去5年分の過去問ベースで完答⇒1ラリー目完了。ざっと見直し(1週間前、直前)
- 午後対策、TAC講義動画全て視聴⇒完了⇒過去ブログ記事も参考に、知識ざっと見直し(試験1週間前まで1日少しづつ)
- 午後1対策、”物理+SQL”問題につき、解き方を把握しておく⇒1ラリー目完了。ざっと見直し。このとき、過去SAなども参考に心構えは整理しておく(試験1週間前まで、1週間前、直前)
- 午後1・午後2対策、論理設計問題につき、時間内に答えを埋める訓練⇒約7つの過去問につき2ラリー目まで完了。1日1回の実技演習として3ラリー目実施中(試験1週間前まで、1週間前、直前)
- 全般対策、TAC実力テストおよび公開模試の提出⇒提出済、返却待ち(実力テストは返却あり)
- 全般対策、初見問題のアウトプット練習(R3 PM2、R3 PM1 問1,2、R3 PM2論理およびSQL練習問題としてH28問3,H29問3,R2問3)⇒試験1週間前まで、1週間前
対策BETTERのもの
- 午前2対策、三好先生の本ベースでも問題を解いておくことで、より幅広く対応⇒着手中(上記と並行)
- 午後対策、過去問パターンや業務基本パターン(三好先生テキスト)の記憶⇒着手中(上記と並行)
今後の大まかな計画(NEW)
- 直近2~3日はキャリコンに集中。基礎理論部分を完了させる。
- そのうえで、のこり約2週間の過ごし方を考える。(9/25~27は家族旅行のためカウントしない)
- 一通りの練習は最低1ラリー完了しており、最後の総まとめフェーズとなる。
- 午前2、午後1、午後2それぞれ必須テクは異なるので、それぞれ整理するのはMUST。
- そのうえで、今まで解いたことの振り返り(INPUT)をしつつ、初見問題で練習(OUTPUT)するのが効果的だろう。
- たとえば…まず午前2について、必須テクを整理し、一通り振り返り、初見のR3 AM2を実際に解いて定着させ、直前に見返せるようにする。(三好先生のテキスト午前分や、TAC公開模試振り返りなどもこの時実施)
- 次に、午後1、午後2も同様に行う。論理設計は「コツ」として過去ブログにまとめており、午後1の物理やSQLも過去問解く際あるていど「コツ」をまとめている。初見問題は午後2はR3、午後1はR3のほかSQLがいくつか残してあるのでそれを。(三好先生のテキスト業務知識分や、TAC公開模試振り返りなどもこの時実施)
- なお、DB本試験の前日にキャリコンの講習があるが、これは止む無し。そのぶん本試験1週間前の平日はかなり集中し、DB本試験の準備に集中したい)
SQL実習(同一テーブルを別名で2回呼び出すパターン)
- データベーススペシャリスト資格のSQL問題において、よく見られる(その割に読解し辛い)パターンの再現・復習。
- 「ひとつのクエリで、同一テーブルを別名で2回呼び出す」パターン。これを使うのは「テーブル内のベスト1やトップ3などを求める」場合だろう。
パターン1 顧客テーブル内で、最も若い誕生日のユーザーIDを求める
- もっとも簡単なのは、selectでユーザーIDを指定し、誕生日順に並び替えて、limit 1で最初の一人のみ表示する方法。
- 次に実験として、同一テーブルを2回呼び出す方法を取る。
- これは以下のように、サブクエリ内で「最も若い誕生日」だけ求め、それをwhereの条件に使う方法
パターン2 顧客テーブル内で、若い誕生日のトップ3を求める
- これも簡単なのは、誕生日順に並び替えて、limit 3で三人を表示する方法。
- また、ウィンドウ関数のrankでランキングをつけて、抽出することもできる。
- 三つ目のやり方として、サブクエリで「同一テーブル内で誕生日を比較し合い、自分より大きい(小さい)ものの数をカウント」し、where条件でトップいくつまで求めるか指定する方法。
- 正直、このような方法はややこしい。(読解しづらい)
- ただ、上記のように同じテーブルを2回呼び出すSQLが出てきても、「あぁ、これはトップ3を表示したんだな…」と分かるようにはしておきたい。
問題133(SQL確認ドリル)
問題文
- customersテーブルから、東京都に住む顧客に対して、販売金額(revenue)を基準として、もっとも販売した商品のトップ3を求めてください。
- 結果テーブルは商品名(product_name)と販売金額の合計(sum_rev)の2カラムとし、sum_revの降順で表示してください。
結合のおさらい
- まず、顧客の住所はcustomersテーブルに管理されている(主キーはuser_id)。
- 次に、商品名はproductsテーブルに管理されている(主キーはproduct_id)。
- 最後に、販売実績はsalesテーブルに管理されている(外部キーにuser_id,product_idを持つ)。
- 今回求めたいのは「東京に住む顧客につき」「商品名ごとの」「販売額合計トップ3」なので、3つのテーブルにまたがった集計が必要となる。
- そこで、joinで3つのテーブルをつなげ、そのうえでwhere,group byを使う。
- 具体的には以下のとおり。
考察
- データベーススペシャリスト資格について。試験約3週間前なので、他の予定もふまえ、今後の総まとめ計画を再整理した。あわせて、SQL問題で見られる「同一テーブルを別名で2回使う」パターンをbig queryで再現・復習した。
- また、SQLの確認ドリル(customersテーブルから、東京都に住む顧客に対して、販売金額を基準として、もっとも販売した商品のトップ3を求める)を解いた。
- キャリアコンサルタント資格について、「ネットワークの形成と自己研鑽」に関して学んだ。キャリアコンサルティングは「より良い人生にむけた支援」なので、非常に幅広いものだと感じる。よって、私自身の経験や強みを活かす方針を定めつつも、それを高め、広げていくことが重要と感じた。
考察のシンプル化と英訳(練習中)
- I think self-growth and new network is a good thing. For myself, for society.
- (自己成長と新しい繋がりは良いことだと思う。自分にとっても、社会にとっても)
参考資料
- 集中演習 SQL入門/木田和廣/株式会社インプレス
- 2022年度版 ALL IN ONE パーフェクトマスター データベーススペシャリスト/TAC
コメント