問題

5
SQL

【腕試し問題】結合×グループ化

中級問題で登場したグループ化とテーブル結合の合わせ技を使った問題となります。 それぞれの役割を再確認しながら問題を解いてみましょう。

SQLの問題に挑戦しよう!

問題

【腕試し問題】結合×グループ化

「koga」テーブルの講座を言語別に集計し、多い順にTOP3にして表示してください

出力項目は、langテーブルの「言語名」と集計数を表す「num」としましょう。

期待する画面を参考に作成してください。

期待する画面

解答の画像

解答と解説(【腕試し問題】結合×グループ化)

解説

LINE登録して解答を見る

※ご登録後トークルーム下部にあるメニュー内
「無料問題集※解答付き」を押すと
解答閲覧用URLが届きます

まずは出力する項目を書き出しましょう。
指定のある通り、langテーブルの「言語名」と集計数「num」を設定するのですが、「num」というカラムはないためASを使って別名で指定することが分かります。
表示すべきは言語ごとの講座名の集計値(データの数)なので、COUNT(koga.講座名)をASで「num」を指定します。

上記のように別テーブルの情報を同時に表示するには、kogaテーブルとlangテーブルを結合する必要があります。
結合するにはJOIN句を使って結合したいテーブル名を指定します。
JOIN句はON句とセットです。ON以降にはJOINで指定したテーブルのどの行をつなぐのかを結合条件として指定します。

結合ができたらカテゴリ別で集計するために必要なグループ化処理をGROUP BYを使って指定します。集計したい列を指定しましょう。

最後は降順の指定とLIMIT句で行数指定すれば完成です。

補足

今回の問題のように集計したデータを表示させたい場合は
集計関数(COUNTとかSUMとか)とGROUP BYがセットで思い浮かぶようにしておきましょう。

解説にある通り、テーブル結合はJOINとONです!

さらにスキルアップしたい方は公式LINEから「SQL」と送信すると動画が見れます。

LINE登録して動画を視聴する
あなたに合った学習プランは?LINE適正コース診断はこちら