カテゴリ: PostgreSQL 更新日: 2026/01/17

PostgreSQLのGROUP BYの基本的な書き方

PostgreSQLのGROUP BYの基本的な書き方
PostgreSQLのGROUP BYの基本的な書き方

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

生徒

「人数を数えることはできたんですが、年齢ごとに人数を分けて数えることもできますか?」

先生

「できます。そのときに使うのがGROUP BYです。」

生徒

「グループって、まとめるってことですか?」

先生

「その通りです。同じ値ごとに分けて、集計するための書き方です。」

1. SQLとは何か?

1. SQLとは何か?
1. SQLとは何か?

SQLは、データベースという仕組みに保存されているデータを操作するための言語です。データベースは、表の形で情報を整理して保存する場所です。SQLを使うと、その表の中から必要な情報を取り出したり、数を数えたり、計算したりできます。PostgreSQLは、SQLを使って操作できる代表的なデータベースの一つです。

2. GROUP BYとは何をするものか?

2. GROUP BYとは何をするものか?
2. GROUP BYとは何をするものか?

GROUP BYは、データをグループごとにまとめるためのSQLの書き方です。紙の名簿を想像してください。年齢が同じ人ごとに線を引いて分け、その人数を数えるような作業があります。GROUP BYは、この「同じもの同士で分ける」作業をデータベースで行うための命令です。

3. サンプルテーブルを確認しよう

3. サンプルテーブルを確認しよう
3. サンプルテーブルを確認しよう

ここではusersテーブルを使って説明します。SQLを実行する前のテーブルは次のとおりです。


id | name       | age | email
---+------------+-----+-------------------
1  | 山田太郎   | 25  | taro@example.com
2  | 佐藤花子   | 19  | hanako@example.com
3  | 鈴木一郎   | 30  | ichiro@example.com
4  | 高橋次郎   | 25  | jiro@example.com
5  | 伊藤美咲   | 19  | misaki@example.com
6  | 小林健太   | 30  | kenta@example.com

4. GROUP BYの基本的な書き方

4. GROUP BYの基本的な書き方
4. GROUP BYの基本的な書き方

GROUP BYは、集約関数と一緒に使います。例えば、年齢ごとに人数を数えたい場合は、年齢でグループ分けして、COUNTで数えます。


SELECT age, COUNT(*)
FROM users
GROUP BY age;

age | count
----+------
19  | 2
25  | 2
30  | 2

この結果は、年齢が19歳の人が2人、25歳が2人、30歳が2人いることを示しています。名簿を年齢順に分けて、それぞれの人数を数えた結果と同じです。

5. GROUP BYで指定した列の意味

5. GROUP BYで指定した列の意味
5. GROUP BYで指定した列の意味

GROUP BYで指定した列は、「この列の値が同じものを一つのグループにする」という意味です。上の例ではageを指定しているので、年齢が同じ行同士がまとめられています。SELECTの中に書ける通常の列は、基本的にGROUP BYに書いた列だけになります。これは、どのグループの値なのかをはっきりさせるためです。

6. 複数の集約関数とGROUP BY

6. 複数の集約関数とGROUP BY
6. 複数の集約関数とGROUP BY

GROUP BYでは、COUNTだけでなく、他の集約関数も一緒に使えます。例えば、年齢ごとに人数と平均年齢を確認することもできます。


SELECT age, COUNT(*), AVG(age)
FROM users
GROUP BY age;

age | count | avg
----+-------+-----
19  | 2     | 19
25  | 2     | 25
30  | 2     | 30

このように、同じグループの中でまとめて計算ができます。AVGは平均を計算する集約関数です。

7. WHEREとGROUP BYの組み合わせ

7. WHEREとGROUP BYの組み合わせ
7. WHEREとGROUP BYの組み合わせ

GROUP BYを使う前に、条件でデータを絞りたい場合もあります。そのときはWHEREを先に書きます。例えば、20歳以上の人だけを年齢ごとに数える場合です。


SELECT age, COUNT(*)
FROM users
WHERE age >= 20
GROUP BY age;

age | count
----+------
25  | 2
30  | 2

WHEREで対象を選び、その後でGROUP BYでまとめる、という順番だと覚えると分かりやすいです。

8. GROUP BYを使うときの考え方

8. GROUP BYを使うときの考え方
8. GROUP BYを使うときの考え方

GROUP BYは、「同じ値ごとに分けて、まとめて計算する」ための仕組みです。紙の名簿を机に広げて、同じ条件の人を並べ直すイメージを持つと理解しやすくなります。PostgreSQLでは、このGROUP BYを使うことで、データを分析したり、傾向を知ったりすることができます。最初は一つの列でグループ化する練習から始めると、自然に使い方が身についていきます。

カテゴリの一覧へ
新着記事
New1
PostgreSQL
PostgreSQLのLIMIT・OFFSETとパフォーマンス問題を完全解説|初心者でもわかる安全な使い方
New2
MySQL
MySQLのUPDATE文でデータを更新する基本を徹底解説|SQL初心者でもわかるデータベース更新入門
New3
PostgreSQL
PostgreSQLのOFFSET完全入門|並び替えと組み合わせてデータをスキップする方法を初心者向けに解説
New4
MySQL
MySQLで複数行INSERTを行う方法と注意点を徹底解説|SQL基礎から学ぶデータベース入門
人気記事
No.1
Java&Spring記事人気No1
PostgreSQL
PostgreSQLのDISTINCT完全ガイド|SQLで重複データを除外する方法を初心者向けに解説
No.2
Java&Spring記事人気No2
PostgreSQL
PostgreSQLの主キー・外部キーを完全解説!初心者でもわかる設定方法と考え方
No.3
Java&Spring記事人気No3
PostgreSQL
PostgreSQLのUPDATE文の使い方(部分更新・条件更新)
No.4
Java&Spring記事人気No4
PostgreSQL
PostgreSQLとは?初心者向けに特徴をわかりやすく解説
No.5
Java&Spring記事人気No5
PostgreSQL
PostgreSQLのLEFT JOIN完全入門!不足データを補いながらテーブル結合する仕組みをやさしく解説
No.6
Java&Spring記事人気No6
PostgreSQL
PostgreSQLスキーマ設計のベストプラクティス完全ガイド|初心者でもわかるデータベース整理術
No.7
Java&Spring記事人気No7
PostgreSQL
PostgreSQLの権限管理を完全解説|スキーマ単位で理解するデータベースセキュリティの基礎
No.8
Java&Spring記事人気No8
PostgreSQL
PostgreSQLスキーマ作成・削除完全ガイド!初心者でもわかるデータベース設計の基礎