カテゴリ: PostgreSQL 更新日: 2026/03/15

PostgreSQLのMAX・MIN完全解説|集約関数とGROUP BYで最大値・最小値を抽出する方法

PostgreSQLのMAX/MINで値を抽出する方法
PostgreSQLのMAX/MINで値を抽出する方法

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

生徒

「PostgreSQLで一番大きい値とか、一番小さい値を調べたいときはどうすればいいんですか?」

先生

「そのときに使うのがMAXとMINです。テストの最高点や最低点を探すような感覚で使えます。」

生徒

「パソコンが苦手で、数字を見るだけでも不安なんですが大丈夫ですか?」

先生

「大丈夫です。紙に書いた表を見ながら、一番上と一番下を探す感覚で説明します。」

1. SQLとは何か?

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

SQLは、データベースという「たくさんの情報を表の形で保存する場所」に指示を出すための言葉です。住所録や名簿、売上表のようなものを、パソコンの中で扱うために使います。

PostgreSQLは、そのSQLを使って操作できるデータベースの一種で、無料で使えることから多くの現場で利用されています。

2. MAXとMINは何をする集約関数なのか

2. MAXとMINは何をする集約関数なのか
2. MAXとMINは何をする集約関数なのか

MAXとMINは、集約関数と呼ばれるSQLの命令です。集約関数とは、たくさんのデータをまとめて計算するための命令のことです。

MAXは「最大値」、MINは「最小値」を求めます。たとえば、クラス全員の身長の中で一番高い人、一番低い人を探すイメージです。

3. サンプルテーブルを見てみよう

3. サンプルテーブルを見てみよう
3. サンプルテーブルを見てみよう

ここでは、年齢が登録されているユーザー表を例に説明します。まずはSQLを実行する前の表を見てください。


id | name       | age | email
---+------------+-----+-------------------
1  | 山田太郎   | 25  | taro@example.com
2  | 佐藤花子   | 19  | hanako@example.com
3  | 鈴木一郎   | 30  | ichiro@example.com
4  | 高橋次郎   | 22  | jiro@example.com

この表は、紙の名簿と同じです。年齢の列を縦に見て、一番大きい数字や小さい数字を探すと、MAXとMINの意味が分かります。

4. MAXで最大値を取得する方法

4. MAXで最大値を取得する方法
4. MAXで最大値を取得する方法

年齢の中で一番大きい値、つまり最年長の年齢を調べたい場合はMAXを使います。


SELECT MAX(age)
FROM users;

max
----
30

結果は30です。鈴木一郎さんの年齢が一番高いことが分かります。人が目で確認する代わりに、PostgreSQLが自動で探してくれています。

5. MINで最小値を取得する方法

5. MINで最小値を取得する方法
5. MINで最小値を取得する方法

次に、一番小さい年齢、つまり最年少の年齢を調べてみます。今度はMINを使います。


SELECT MIN(age)
FROM users;

min
----
19

最小値は19です。佐藤花子さんが一番年齢が低いことが分かります。MAXとMINは書き方がとても似ているので、セットで覚えると楽です。

6. 文字列でもMAXとMINが使える理由

6. 文字列でもMAXとMINが使える理由
6. 文字列でもMAXとMINが使える理由

MAXとMINは数字だけでなく、文字にも使えます。文字の場合は、あいうえお順、アルファベット順で比較されます。


SELECT MAX(name), MIN(name)
FROM users;

max     | min
--------+--------
高橋次郎 | 佐藤花子

これは辞書順で比較されている結果です。文字でも順番があるという点を覚えておくと、混乱しにくくなります。

7. GROUP BYと一緒に使うMAX・MIN

7. GROUP BYと一緒に使うMAX・MIN
7. GROUP BYと一緒に使うMAX・MIN

GROUP BYを使うと、グループごとに最大値や最小値を求められます。たとえば部署ごとの最高年齢を調べる場合です。


id | department | age
---+------------+-----
1  | 営業       | 25
2  | 営業       | 30
3  | 開発       | 22
4  | 開発       | 28

SELECT department, MAX(age), MIN(age)
FROM users
GROUP BY department;

department | max | min
-----------+-----+----
営業       | 30  | 25
開発       | 28  | 22

部署ごとに年齢の幅が分かります。GROUP BYは「分類してから計算する」と覚えると理解しやすいです。

8. MAX・MINを使うときの注意点

8. MAX・MINを使うときの注意点
8. MAX・MINを使うときの注意点

MAXとMINは、NULLという「値が入っていない状態」を自動的に無視します。これは空白とは違い、「まだ決まっていない」という意味です。

また、最大値や最小値が分かっても、「その値を持つ人の名前」までは分かりません。誰なのかを知りたい場合は、別のSQLが必要になる点も覚えておきましょう。

9. MAX・MINを使いこなす考え方

9. MAX・MINを使いこなす考え方
9. MAX・MINを使いこなす考え方

MAXとMINは、データの中から代表的な値を取り出すための便利な道具です。表を上から下まで眺めて探す作業を、機械に任せているだけだと考えてください。

どの列を比べているのか、どんなデータが入っているのかを意識することで、PostgreSQLの集約関数は安心して使えるようになります。

カテゴリの一覧へ
新着記事
New1
PostgreSQL
PostgreSQLのMAX・MIN完全解説|集約関数とGROUP BYで最大値・最小値を抽出する方法
New2
MySQL
MySQLのORDER BYで文字列を並び替える方法と注意点を徹底解説|SQL初心者向け完全ガイド
New3
PostgreSQL
PostgreSQLのSUM・AVG完全解説|集約関数とGROUP BYの計算時の注意点を初心者向けにやさしく説明
New4
MySQL
MySQLのWHERE句でBETWEENを使う方法を徹底解説!SQL初心者でもわかる範囲検索の基本
人気記事
No.1
Java&Spring記事人気No1
PostgreSQL
PostgreSQLのUPDATE文の使い方(部分更新・条件更新)
No.2
Java&Spring記事人気No2
PostgreSQL
PostgreSQLスキーマ作成・削除完全ガイド!初心者でもわかるデータベース設計の基礎
No.3
Java&Spring記事人気No3
PostgreSQL
PostgreSQLとは?初心者向けに特徴をわかりやすく解説
No.4
Java&Spring記事人気No4
PostgreSQL
PostgreSQLでスキーマを分割するメリット
No.5
Java&Spring記事人気No5
PostgreSQL
PostgreSQLのpublicスキーマの役割と扱い方
No.6
Java&Spring記事人気No6
PostgreSQL
PostgreSQLの主キー・外部キーを完全解説!初心者でもわかる設定方法と考え方
No.7
Java&Spring記事人気No7
PostgreSQL
PostgreSQLのORDER BYの基本(昇順・降順)
No.8
Java&Spring記事人気No8
PostgreSQL
PostgreSQLでよく使うデータ型一覧(文字列・数値・日付)