カテゴリ: 基本情報技術者試験 更新日: 2025/10/31

GROUP BY句とは?初心者でもわかるデータのグループ化と集計の基本を解説!

GROUP BY句
GROUP BY句

先生と生徒の会話形式で理解しよう

生徒

「先生、SQLのGROUP BY句(グループバイク)って何に使うんですか?」

先生

「GROUP BY句は、データベース(Database/データベース)の中のデータを“グループ”にまとめて集計するときに使います。例えば、部署ごとの社員数や月ごとの売上合計を出したいときに便利なんです。」

生徒

「なるほど!単にデータを一覧で見るだけじゃなくて、まとめるときに使うんですね?」

先生

「そうです。GROUP BY句は、集合関数(シュウゴウカンスウ)と一緒に使うことが多くて、データの分析や統計に欠かせない構文なんですよ。では順番に見ていきましょう。」

1. GROUP BY句(グループバイク)とは?

1. GROUP BY句(グループバイク)とは?
1. GROUP BY句(グループバイク)とは?

GROUP BY句は、SQL(エスキューエル/Structured Query Language)でデータをグループ化するための構文です。たとえば、社員テーブルのデータを部署ごとにまとめたい、または売上データを月ごとに集計したい、そんなときに使います。

通常のSELECT文(セレクトブン)は1行ずつデータを取得しますが、GROUP BY句を使うと「同じ値を持つ行をひとまとめ」にできます。そして、そのグループごとに合計や平均などの計算ができるようになります。

2. GROUP BY句の基本構文

2. GROUP BY句の基本構文
2. GROUP BY句の基本構文

GROUP BY句は、SELECT文の中で次のように使います。

SELECT 列名, 集合関数(列名)
FROM 表名
GROUP BY 列名;

たとえば、部署ごとの社員数を求めたい場合は次のように書きます。

SELECT department, COUNT(*) 
FROM employees 
GROUP BY department;

このSQLを実行すると、部署(department)ごとに社員の人数が表示されます。GROUP BYは単独では意味を持たず、COUNTやSUM(サム)、AVG(エーブイジー)などの集合関数と組み合わせて使うのが基本です。

3. 集合関数(シュウゴウカンスウ)との関係

3. 集合関数(シュウゴウカンスウ)との関係
3. 集合関数(シュウゴウカンスウ)との関係

GROUP BY句の真価は、集合関数と組み合わせたときに発揮されます。代表的な集合関数には次のようなものがあります。

  • COUNT():件数を数える
  • SUM():合計を求める
  • AVG():平均を求める
  • MAX():最大値を求める
  • MIN():最小値を求める

例えば、「部署ごとの平均給与」を出したいときは次のように書きます。

SELECT department, AVG(salary)
FROM employees
GROUP BY department;

これにより、部署ごとに平均給与が計算され、整理された形で結果が表示されます。

4. 複数の列でグループ化する

4. 複数の列でグループ化する
4. 複数の列でグループ化する

GROUP BY句では、複数の列を指定してグループ化することも可能です。たとえば、部署ごと・職種ごとに社員数を出したい場合は次のようにします。

SELECT department, job_title, COUNT(*) 
FROM employees 
GROUP BY department, job_title;

このように書くと、「部署 × 職種」の組み合わせごとに社員の数を表示できます。複数列を使うことで、より細かい単位での分析ができるようになります。

5. HAVING句(ハビングク)との組み合わせ

5. HAVING句(ハビングク)との組み合わせ
5. HAVING句(ハビングク)との組み合わせ

GROUP BY句で集計した結果に条件を付けたい場合は、HAVING句を使います。HAVING句は、WHERE句と似ていますが、WHERE句はグループ化の前、HAVING句はグループ化の後に条件を指定します。

例えば、「平均給与が30万円以上の部署だけを表示」したいときは次のように書きます。

SELECT department, AVG(salary)
FROM employees
GROUP BY department
HAVING AVG(salary) >= 300000;

このようにHAVING句を使うと、集計結果に対してフィルタをかけることができます。

6. WHERE句(ウェアク)との違い

6. WHERE句(ウェアク)との違い
6. WHERE句(ウェアク)との違い

WHERE句とHAVING句は混同しやすいですが、実行されるタイミングが違います。

  • WHERE句:グループ化する前に、行を絞り込む
  • HAVING句:グループ化した後に、グループを絞り込む

たとえば、営業部の中で平均給与が30万円以上の部署を出したい場合は、WHEREとHAVINGを両方使います。

SELECT department, AVG(salary)
FROM employees
WHERE department = '営業部'
GROUP BY department
HAVING AVG(salary) >= 300000;

WHEREで「営業部」だけに絞り、HAVINGで「平均給与30万円以上」に絞るという流れです。

7. ORDER BY句(オーダーバイク)と一緒に使う

7. ORDER BY句(オーダーバイク)と一緒に使う
7. ORDER BY句(オーダーバイク)と一緒に使う

GROUP BY句でグループ化した結果を並べ替えたい場合は、ORDER BY句を組み合わせて使います。たとえば、平均給与が高い順に並べたい場合は次のようにします。

SELECT department, AVG(salary)
FROM employees
GROUP BY department
ORDER BY AVG(salary) DESC;

これにより、部署ごとの平均給与が高い順(降順)に表示されます。GROUP BYとORDER BYはよくセットで使われる構文です。

8. 実務でのGROUP BY句の活用例

8. 実務でのGROUP BY句の活用例
8. 実務でのGROUP BY句の活用例

GROUP BY句は、業務システムやデータ分析の現場で頻繁に登場します。たとえば、ネットショップでは「商品カテゴリごとの売上合計」や「月ごとの注文数」を求めるときにGROUP BYが使われます。

また、人事システムでは「部署ごとの平均年齢」や「職種ごとの社員数」を算出するのに利用されます。GROUP BY句を使えば、データベースの中の情報を“意味のある単位”で集計できるようになるのです。

9. GROUP BY句の歴史と現在の活用

9. GROUP BY句の歴史と現在の活用
9. GROUP BY句の歴史と現在の活用

GROUP BY句は、リレーショナルデータベース(RDB/アールディービー)の登場とともに標準SQLとして取り入れられました。1970年代に考案されたSQLの基礎構文のひとつであり、今もMySQL(マイエスキューエル)・PostgreSQL(ポストグレスキューエル)・Oracle(オラクル)・SQL Server(エスキューエルサーバー)など、あらゆるデータベースで利用されています。

さらに、近年のクラウド環境やビッグデータ分析の分野でもGROUP BY句は欠かせません。たとえば、Google BigQuery(グーグルビッグクエリ)やAmazon Redshift(アマゾンレッドシフト)などでも同様の構文でデータ集計が可能です。つまり、GROUP BY句を理解しておくことは、データ分析の世界で活躍する第一歩といえるでしょう。

カテゴリの一覧へ
新着記事
New1
基本情報技術者試験
クライアントサーバシステムとは?初心者でもわかるネットワークの基本構成をやさしく解説
New2
基本情報技術者試験
分散処理とは?初心者でもわかるコンピュータの処理方式をやさしく解説
New3
情報セキュリティマネジメント試験
ブラックリストとは何かをやさしく解説!初心者でもわかる仕組みと活用例
New4
基本情報技術者試験
集中処理とは?初心者でもわかるコンピュータ処理方式の基本用語をやさしく解説
人気記事
No.1
Java&Spring記事人気No1
基本情報技術者試験
FTP
220
FTPとは?初心者でもわかるファイル転送プロトコルの基本と仕組みを徹底解説!
No.2
Java&Spring記事人気No2
基本情報技術者試験
NIC
212
NICとは何か?初心者にもわかるネットワークインターフェースカードの基本
No.3
Java&Spring記事人気No3
基本情報技術者試験
16進数とは?初心者にもわかる意味・読み方・変換方法をやさしく解説!
No.4
Java&Spring記事人気No4
基本情報技術者試験
URL
187
URLとは?初心者でもわかるWebリンクの仕組みと役割をやさしく解説!
No.5
Java&Spring記事人気No5
基本情報技術者試験
イーサネット(Ethernet)とは?初心者にもわかるLANの基本技術をやさしく解説
No.6
Java&Spring記事人気No6
基本情報技術者試験
セグメントとは?ネットワークの基本単位を初心者向けにやさしく解説
No.7
Java&Spring記事人気No7
基本情報技術者試験
スキーマ(Schema)とは?データベースの基本構造を初心者向けに解説
No.8
Java&Spring記事人気No8
基本情報技術者試験
ハブとは?初心者でもわかるネットワーク接続装置の基本と仕組み