先日公開した新作プログラミングゲーム『エンジニア騎士とクエリの魔女』、皆さんプレイしていただけましたでしょうか?
今作ははじめてSQLの問題を出題したこともあり、いつも以上に多くの方が楽しんでくださったと思います。
この記事では、SQLのA・Bランク相当の問題の解説・解答例をお届けします。挑戦したけど難しかった・解けなかったという方は、参考にして再挑戦してみてください。
なお、C・Dランク相当の問題は、以下の記事に解答例を公開していますのでそちらも合わせてごらんください。
SQL問題全6問の解説動画公開中!
まずはじめに、paizaラーニングを担当している当社エンジニアが問題解説をしている動画を紹介します。詳しい解説はぜひこちらの動画をごらんください。
概要欄にどの問題が何分からスタートするか記載していますので、ご自分が見たい問題に適宜飛んでいただければと思います。
精霊の村(Bランク相当)
問題文
Hellテーブルから、属性名が「Air」、階級が「Boss」のレコードをすべて出力してください。
なお、属性名はHellテーブルのelement_idを外部キーとしてElementテーブルを、階級はHellテーブルのgrade_idを外部キーとしてGradeテーブルをそれぞれ外部参照してください。
レコードを出力する際に表示するカラムはHellテーブルのid, Hellテーブルのname, Elementテーブルのname, Gradeテーブルのnameとし、Elementテーブルのnameには「element」を、Gradeテーブルのnameには「grade」と名付けてください。
問題を解くために必要な知識を学べる講座
この問題を解くには、テーブルの結合(JOIN句)について理解する必要があります。「新・SQL入門編4: テーブルの結合を理解しよう」を受講してみましょう!(9/21(水)まで無料公開中)
解答例
解説動画では、ひとつ前に解いた「禁断の洞窟」(Cランク相当)で書いたSQLを修正して正解のコードを導いています。
SELECT Hell.id, Hell.name, Element.name AS element, Grade.name AS grade FROM Hell JOIN Grade ON Hell.grade_id = Grade.id JOIN Element ON Hell.element_id = Element.id WHERE Element.name = 'Air' AND Grade.name = 'Boss';
正解すると得られるゲーム内アイテム
ゲットしたアイテムは装備ページでキャラクターに装備できます。
>> この問題に挑戦してみる!
※プレイにはpaizaへの会員登録(無料)が必要です。
※プログラミングゲームの問題は何度でも時間制限なしで挑戦していただけます。また、SNSなどでのシェアも可能です。
獣の足跡(Aランク相当)
問題文
Hellテーブルから、モンスターの「Graffiacane」(Hellテーブルのnameが「 Graffiacane 」のレコード) の弱点となる属性名を持ち、階級が「Boss」であるレコードをすべて出力してください。
属性名はHellテーブルのelement_idを外部キーとしてElementテーブルを外部参照してください。
弱点はElementCompatibilityテーブルに格納されており、弱点に対応する属性名はelement_id、weakness_element_idを外部キーとしてElementテーブルを外部参照することで取得できます。
階級はHellテーブルのgrade_idを外部キーとしてGradeテーブルを外部参照してください。なお、レコードを出力する際に表示するカラムは、Hellテーブルのid, Hellテーブルのname, Elementテーブルのname, Gradeテーブルのnameとし、Elementテーブルのnameには「element」、Gradeテーブルのnameには「grade」と名付けてください。
解答例
この問題もテーブルの結合の知識が必要です。複数のテーブルを結合するので、実際に実行して表示を確認しながらSQLを修正して、求めたい答えに近づけていきましょう。
以下の解答例のSQLはサブクエリ(副問合せ)を使ったものですが、解説動画では地道にSQLを書いて解く方法も紹介しています。SQLにあまり慣れていない方はそちらも参考にしてみてください。
SELECT Hell.id, Hell.name, Element.name AS element, Grade.name AS grade FROM Hell JOIN Grade ON Hell.grade_id = Grade.id JOIN Element ON Hell.element_id = Element.id WHERE element_id IN( SELECT weakness_element_id FROM Hell JOIN ElementCompatibility ON Hell.element_id = ElementCompatibility.element_id WHERE name = 'Graffiacane') AND Grade.name = 'Boss';
SQLを学べる講座を期間限定無料公開中!
さきほどもご紹介した、「新・SQL入門編」の他に「DB/SQL入門編」も9/21(水)まで無料公開中です。
たとえば、さきほどAランク相当の問題で出てきたサブクエリは、「DB/SQ入門編」のチャプター「08:サブクエリでアクティブユーザー数を求めよう」で学ぶことができます。
paizaラーニングの講座は、ブラウザ上でコードを書いて実行できるため、自分で環境構築をする必要がありません。特にSQLはデータベースを自分で用意するのは大変なので、この機会にぜひご活用ください。
学べる内容について、詳しくは以下の記事でお伝えしています。
まとめ
新作プログラミングゲーム『エンジニア騎士とクエリの魔女』から、SQLの高難度問題の解答例をご紹介しました。
SQLはエンジニア以外の職種の方でも知っておくと役立つ場面が多くあります。「勉強はなかなか続かない…」という方は、ゲーム形式で楽しみながら学べるpaizaのコンテンツをぜひ試してみてください。
なお、ただいまAmazonギフト券が当たる公開キャンペーンを実施中です!
ゲーム・冒険の進行状況をTwitterで紹介してくれた方の中から、抽選でAmazonギフト券1万円分を1名様、500円分を50名様にプレゼントします。 (当選された方にはツイッターDMでご連絡しますので、応募の際は @paiza_official のフォローをお願いします)
キャンペーンは、9/19(月)までとなっております。皆さまのご参加お待ちしています。
「paizaラーニング」では、未経験者でもブラウザさえあれば、今すぐプログラミングの基礎が動画で学べるレッスンを多数公開しております。
詳しくはこちら
そしてpaizaでは、Webサービス開発企業などで求められるコーディング力や、テストケースを想定する力などが問われるプログラミングスキルチェック問題も提供しています。
スキルチェックに挑戦した人は、その結果によってS・A・B・C・D・Eの6段階のランクを取得できます。必要なスキルランクを取得すれば、書類選考なしで企業の求人に応募することも可能です。「自分のプログラミングスキルを客観的に知りたい」「スキルを使って転職したい」という方は、ぜひチャレンジしてみてください。
詳しくはこちら