【SQL】group by / order by の使い方を例文を用いて解説(練習問題あり)
group by / order byの基本構文
group by / order by は以下の構文を使う。
グループ化したい、または並び替えたいカラムを指定することが、group by / order by では必要になる。
上の図で、「部活動のカラムをグループ化」して抜き出す場合は、
とクエリーを書くと以下のように結果が返ってくる。
また、idが大きい順に全カラムを並び替えたい場合には、
と書くことで、idが大きい順にデータが抽出されるのだ。
実際の業務で、group by / order by を使用する場合には、どんなデータを出したいのかを明確にし、その上で何をグルーピング、または並び替えるのかを入念に考える必要があるだろう。
group by / order by の練習問題
練習問題を通じて、実践的にgroup by / order byの用法を理解していこう。
練習問題1 : 「1年1組基本情報テーブルから、『部活動ごとの生徒数』を計測しなさい」
まずは、group by を用いる練習問題だ。
回答は以下である。
生徒数を計測したい場合は、count文を用いる必要がある。
count文の復習はこちら👇
結果は以下のように抽出される。
練習問題2 : 「1年1組基本情報テーブルから、『部活動ごとの生徒数』を多い順に並びかえなさい」
次は、group by と order by を複合した応用問題だ。
回答は以下である。
結果は以下のように抽出される。
group byで部活動を指名することによって、計測した数字を、部活動ごとにグルーピング化したのである。
as関数は、抜き出す結果(カラム)に名前をつけるもので、今回は「total」と名付けた。
order by では並び替えるカラムを指定する必要があり、理解しやすくするためにカラム名をas関数を用いて指定したのだ。
group by / order byでよくあるエラーと解消法
group by / order byでよく起こるエラーと、その解消法を解説していく。
group by を指定し忘れるケース
group by を指定しないと、正しくグルーピング処理されず、エラーになるケースが多くある。
先ほどの練習問題1で、
とクエリーを書いても、グルーピング処理がなされず、正しく「部活動ごとの生徒数」を計測することができない。
group by をつけることで、エラーを解消してもらいたい。
group by・order by・where句 など、関数の順番を間違えるケース
関数の順番を間違えるケースもよくある。
SELECT > FROM > where > group > order の順番でないと、正しく処理されないため、ぜひ意識してもらいたい。
where句の復習はこちら👇
https://note.com/note_enter/n/nc2f714c9543c
最後に自己紹介
はじめまして、ニューズピックス(https://newspicks.com/)でマーケターをしている平野佑樹です。
普段は、JobPicksというジョブ型キャリアを支援するWebサービス(https://job.newspicks.com/)を運営しており、
SQLやGoogle Analyticsを用いた分析
TwitterをはじめとしたSNS運用(ショート動画にも挑戦予定)
メールマガジン運用
Google Optimizeなどを用いたA/Bテスト
Search Consoleを用いてコンテンツSEOや開発に関わるSEO施策
など、幅広く業務を担当しています。
マーケターの業務を後押しするtipsをnoteにて発信しております。
(ぜひ、いいねや拡散お願いいたします🙇)
ぜひ、フォローや興味持っていただいた方は、(https://twitter.com/enterrocken)にDMいただけますと幸いです!