KATUBLO
2019年05月11日

【MYSQL】GROUP BYとは?初心者が簡単に解説

こんにちは。KATUOです。今回はSQLのGROUP BYの使い方について解説していこうと思います。余談ですが、本日から「RIOTとGO」を触ることになりました。

勉強するものが多いですが、コツコツと理解を深めていきます。

では本文にいきましょう。

 

GROUP BYとは

GROUP BY 句を使用することで SELECT 文でデータを取得する時に指定したカラム名の値を基準にグループ化することができます。

引用:「データをグループ化する(GROUP BY句)」

https://www.dbonline.jp/mysql/select/index9.html

 

ここで出てくる重要キーワードは「グループ化」ですね。指定したカラム名の値を基準にしてグループ化するってちょっとよくわかりませんね。

 

グループ化とは

SQL におけるグループ化とは、同列内の値の中で、同じ値を持つデータごとに集合化することをいいます。グループ化には GROUP BY 句を用います。また、グループ化された情報に対して条件を設定し、その条件に合致するものだけを抽出することもできます。これには、GROUP BY 句でグループ化する列名を指定した後、HAVING 句を続けて抽出条件を記述します。

引用:「SQL 5章 データの参照」

https://www.techscore.com/tech/sql/SQL5/05_08.html/

 

まとめると、「同じ列に存在する重複している値は同じ集合とする」という構文です。同じ集合になるということは1つのレコードにまとめられます。実際に例を使ってこれらを確認してみましょう。

 

GROUP BYをMYSQLで書いてみる

このようなworldテーブルが存在するとします。このテーブルに対してまず、以下のSQL文を実行してみましょう。

 

 

出力結果

Mixing of GROUP columns (MIN(),MAX(),COUNT(),…) with no GROUP columns is illegal if there is no GROUP BY clause

 

このようにsum(area)がグループ化されていないということでエラーが発生します。まずareaを合計するということは重複するcontinentをグループ化する必要があるのです。よってこのSQL文を以下のように書き換えます。

 

 

出力結果

 

continentをグループ化(ユニークにしてあげる)することでそれぞれの国のareaの合計値を求めることができました。

 

いかがでしたでしょうか?このようにしてGROUP BYは使うことができます。詳しい部分は以下の参考書なんかを使って勉強するのもいいかもしれません。

 

3ステップでしっかり学ぶ MySQL入門 [改訂2版]

 

 

 

 

最後まで読んで頂き、ありがとうございました。
SNS等でのシェアが頂ければ幸いです!

プロフィール

@KATUO

現在都内私立大学に通う大学4年生。大学では電気電子工学を専攻。大学2年の夏頃に、プログラマーの長期インターン募集の広告が目に止まり、独学でプログラミングの学習をスタート。この時期からプログラミングにどハマりし、現在までに「AIスタートアップ」「Webマーケティング会社」でエンジニアとしての業務に没頭してきた。

大学生必見就活イベント