カテゴリ: 基本情報技術者試験 更新日: 2026/05/07

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

GROUP BY句
GROUP BY句

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

生徒

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

先生

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

生徒

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

先生

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

基本情報技術者試験をこれから学習する人や、 独学で確実に合格レベルまで到達したい人におすすめの定番対策書です。

いちばんやさしい 基本情報技術者を見る

※ Amazonアソシエイト広告リンク

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句を理解しておくことは、データ分析の世界で活躍する第一歩といえるでしょう。

基本情報技術者試験の理解を確実に定着させたい人や、 科目A・Bをまとめて過去問演習したい人に向けた定番の問題集です。

基本情報技術者 パーフェクトラーニング 過去問題集を見る

※ Amazonアソシエイト広告リンク

まとめ

まとめ
まとめ

GROUP BY句は、SQLにおけるデータ集計の基本であり、データベースを扱う上で必ず身につけておきたい重要な構文です。単純にデータを取得するだけでなく、同じ値を持つデータをまとめて分析できる点が大きな特徴です。例えば部署ごとの人数、売上の月別集計、カテゴリごとの平均値など、実務で必要とされる多くの処理はGROUP BY句によって実現されます。

また、GROUP BY句は集合関数と組み合わせることで真価を発揮します。COUNTで件数を数えたり、SUMで合計を求めたり、AVGで平均値を出すなど、データの意味を理解するための集計処理を簡単に行うことができます。これにより、生のデータから価値ある情報を引き出すことが可能になります。

さらに、複数列によるグループ化を行うことで、より細かい単位での分析が可能になります。例えば部署と職種の組み合わせでデータを整理することで、組織の構造や傾向をより深く理解することができます。このような分析は、ビジネスの意思決定にも直結する重要な要素となります。

HAVING句との組み合わせも非常に重要です。WHERE句はデータを絞り込んでからグループ化を行うのに対し、HAVING句はグループ化された後の結果に対して条件を指定します。この違いを正しく理解することで、より柔軟で正確なデータ抽出が可能になります。

ORDER BY句を併用することで、集計結果を見やすく並べ替えることもできます。例えば売上の高い順や平均値の低い順に並べることで、データの傾向が一目で分かるようになります。分析結果を他者に伝える際にも非常に有効な手法です。

実務では、GROUP BY句は日常的に使われる重要な技術です。ECサイトでは商品カテゴリごとの売上分析、企業の人事システムでは部署ごとの平均給与や人数集計など、さまざまな場面で活用されています。データ分析の基礎として、しっかりと理解しておくことが求められます。

次のような基本的な書き方をしっかり覚えておくと応用が効きます。


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

さらに実務に近い例として、部署ごとの平均給与を求める場合は次のように書きます。


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

条件を追加したい場合はHAVING句を使います。


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

このようにGROUP BY句は、データベース操作の中でも非常に実用性が高く、SQLの理解を深める上で欠かせない存在です。初心者のうちにしっかりと基礎を押さえておくことで、より高度なデータ分析やシステム開発へとスムーズに進むことができるでしょう。

先生と生徒の振り返り会話

生徒

GROUP BY句はデータをまとめるための機能で、部署ごとやカテゴリごとに集計できるのが特徴なんですね。

先生

その通りです。単なる一覧表示ではなく、意味のある単位でデータを整理できるのが大きなポイントです。

生徒

COUNTやSUMなどの集合関数と一緒に使うことで、件数や合計、平均などを求められるのも理解できました。

先生

よく理解できていますね。さらにHAVING句を使えば、集計後の結果に条件を付けることも可能です。

生徒

WHERE句との違いも大事ですね。WHEREはグループ化の前、HAVINGは後に使うんでしたね。

先生

その理解で問題ありません。さらにORDER BYを使えば、結果を見やすく並べ替えることもできます。

生徒

実務でもよく使われる理由がよく分かりました。データ分析には欠かせない機能ですね。

先生

その通りです。GROUP BY句をしっかり使いこなせるようになれば、SQLの理解が一気に深まりますよ。

この記事を読んだ人からの質問

この記事を読んだ人からの質問
この記事を読んだ人からの質問

プログラミング初心者からのよくある疑問/質問を解決します

SQLのGROUP BY句(グループバイク)とは、具体的にどのような機能を持つ構文なのでしょうか?初心者にもわかりやすく教えてください。

GROUP BY句は、リレーショナルデータベース(RDB)内に格納されている膨大なデータを、特定の列(カラム)の値に基づいて「グループ化」し、ひとまとめにするための非常に重要なSQL構文です。例えば、バラバラに記録されている売上データを「商品カテゴリごと」や「月ごと」に集約したい場合に活用します。通常のSELECT文ではデータを一行ずつ単純に取得するだけですが、GROUP BY句を使用することで、同じ属性を持つデータをグループとして認識させ、そのグループ単位で集計処理を行うことが可能になります。データの分析や統計レポートの作成には欠かせない基本操作です。
カテゴリの一覧へ
新着記事
New1
情報セキュリティマネジメント試験
RATとは?リモートアクセス型ウイルスの仕組みと対策を初心者向けに解説
更新記事
New2
基本情報技術者試験
ビッグデータとは?初心者でもわかる大量データ活用の基本と活用事例
更新記事
New3
基本情報技術者試験
クライアントとは?初心者でもわかるコンピュータの基本用語をやさしく解説
更新記事
New4
基本情報技術者試験
16進数とは?初心者にもわかる意味・読み方・変換方法をやさしく解説!
更新記事
人気記事
No.1
Java&Spring記事人気No1
基本情報技術者試験
NIC
310
NICとは何か?初心者にもわかるネットワークインターフェースカードの基本
No.2
Java&Spring記事人気No2
基本情報技術者試験
セグメントとは?ネットワークの基本単位を初心者向けにやさしく解説
No.3
Java&Spring記事人気No3
基本情報技術者試験
16進数とは?初心者にもわかる意味・読み方・変換方法をやさしく解説!
No.4
Java&Spring記事人気No4
基本情報技術者試験
DHCP
235
DHCPとは?初心者でもわかるIPアドレス自動割り当ての仕組み
No.5
Java&Spring記事人気No5
基本情報技術者試験
SMTP
174
SMTPとは?初心者でもわかるメール送信の仕組みとプロトコルをやさしく解説!
No.6
Java&Spring記事人気No6
基本情報技術者試験
IMAP
161
IMAPとは?初心者でもわかるメール受信プロトコルの仕組みと使い方
No.7
Java&Spring記事人気No7
基本情報技術者試験
CPU
158
CPUとは何かを完全解説!初心者でもわかるコンピュータの頭脳の仕組み
No.8
Java&Spring記事人気No8
基本情報技術者試験
マイクロ(μ)とは?初心者にもわかる単位の意味と使い方をやさしく解説