こんにちは、下森です。
先週からプロジェクトに配属されて、まだ右も左もわからない状態ですがなんとか頑張ってます。
業務の中でもちろんコードやクエリを書くことがあるのですが、まだ経験が浅いためすぐに適切な内容を記述できないこともしばしばあります。
そんな私のようなプログラミングやSQLの能力を高めたい人にうってつけのイベントがあります。
それが弊社のTOPSICが開催するコンテストです。
今回はTOPSICが開催しているコンテストのうちの一つ、SQLコンテストについて紹介したいと思います。
SQLコンテストとは
SQLコンテストとは、弊社が提供しているTOPSICで行われるSQLの能力を競うイベントです。
競技内容はシンプルで、制限時間内に与えられた問題を回答して獲得した点数を競い合うというものです。
順位分けは獲得した点数で行いますが、同点の場合は解答時間(最後に合計点が増加した時間)やペナルティ(正解するまでの誤答数)を考慮して順位を付けます。
また問題に回答する際、文法や構文などをインターネットや書籍等を調べることは禁止されていません。(複数人で相談して解くことやchatgpt等に問題文を丸投げして解いてもらうといったことは禁止されています。)
そのため、問題でSQLの書き方がわからない部分が出てきても逐次調べれば、その場で回答することができます。
概要の説明はここまでにしておいて、以降では具体的にどのような問題が出題されるのかを簡単にまとめたいと思います。
どんな問題が出題されるの?
コンテストの問題数は3~4問で、1問目は比較的簡単なのですが後半になるにつれて難易度がどんどん上がっていきます。
例えば、1問目としては【用意されたテーブルから特定のカラムを指定された名前を付けて表示してください】(実際の問題とは異なります)のような基本的な構文で解けるような問題が用意されていますが、
4問目には複数のテーブルを組み合わせて複雑な条件のもとデータを抽出しなければいけないような難しい問題が用意されています。
4問目にもなると問題自体が複雑になるため、その問題文や用意されているテーブル、カラムも比較的多く、それを把握するだけでも少し時間がかかります。
そのため、限られた時間で4問全てを正答するのはなかなか難しいと思います。
SQLコンテストに参加してみた
先日ちょうどSQLコンテストに参加する機会があったので私も挑戦してみたのですが、
4問中2問しか解けませんでした。業務でも少しは触っているのにあんまり解けなかったのが悔しいです。
SQLコンテストに参加してみて思ったのは問題を正答するのが意外と難しい、時間がないということです。
私の場合、回答の方針を決定しても、クエリに落とし込む際に構文エラーが発生したり、必要な条件を記述し忘れていたりしていました。また、そのミスを認識して修正するのに時間がかかり、迅速に正答することができませんでした。
構文の理解を深めれば、こういったエラーや修正に時間を割かれるということもなくなると思うので、そこに関しては勉強あるのみですね。
ただもう一つ感じたことが、提出履歴がものすごく勉強になるということです。
大体、このような試験形式のイベントは力試しのために参加することが一般的で、基本的には自分の何点でどの問題を間違えて、模範解答がどうであったかぐらいしかわかりません。
しかし、このSQLコンテストではなんと提出履歴から自分の書いたクエリだけでなく他の方が書いたクエリも閲覧できるのです。
これが個人的にとても便利で、ほかの方がどんな記述で正答しているのか、誤答になっているのかが確認でき自分のクエリと比較することで自分の改善点が見つけやすく学習効率が非常に高いと思います。
端的でかつ可読性の高いクエリを書いている方がたくさんいるので、提出履歴を見ているだけでも勉強になると思います。
終わりに
今回の記事では、SQLコンテストについてまとめました。
SQL全然わからないよという方も、時間制限など無視して1問1問ゆっくり調べながら問題を解いていくだけで、SQLを記述する能力がついていきます。
本で勉強するよりも実際に手を動かして問題を解いてみる方が知識が定着しやすいのでおすすめです。
最後になりますがSQLコンテストはアカウントさえ作れば、だれでも無料で参加できるのでぜひ皆さんも挑戦してみてください。
TOPSIC SQL CONTEST (sint.co.jp)
ではでは~