指定列の最大値を求めるにはMAX関数を,最小値を求めるにはMIN関数をそれぞれ使用します.
MAX関数の基本構文は以下のようになります.(MIN関数も同様です)
SELECT MAX(列名)
FROM テーブル名
GROUP BY句を使用することで,同じ値を持つデータごとにグループ化して最大値と最小値を求めることができます.
SELECT 集計キー1, 集計キー2, ..., MAX(列名1), MIN(列名2), ...
FROM テーブル名
GROUP BY 集計キー1, 集計キー2, ...
注意.
SELECT句には,GROUP BY句で指定した列と集計関数のみを指定することができます.
例として以下のテーブル(従業員マスタ)から従業員の年齢の最大と最小を求めます.
従業員マスタ
従業員コード | 従業員名 | 年齢 | 種別 |
---|---|---|---|
A0001 | チャーリー・ブラウン | 15 | 人間 |
A0002 | ペパーミント・パティ | 15 | 人間 |
A0003 | ルシール・ヴァン・ぺルト | 16 | 人間 |
B0001 | スヌーピー | 4 | 犬 |
C0001 | ウッドストック | 3 | 鳥 |
従業員マスタの全レコードを対象にして年齢の最大と最小を求める場合は以下のようにSQLを書きます. なお以下のサンプルは分かりやすいようにAS句を使用して列に別名をつけています.
SQL
SELECT MAX(年齢) AS 年齢の最大, MIN(年齢) AS 年齢の最小
FROM 従業員マスタ
結果
年齢の最大 | 年齢の最小 |
---|---|
16 | 3 |
種別ごとに年齢の最大と最小を求める場合は以下のようにSQLを書きます.
SQL
SELECT MAX(年齢) AS 年齢の最大, MIN(年齢) AS 年齢の最小, 種別
FROM 従業員マスタ
GROUP BY 種別
結果
年齢の最大 | 年齢の最小 | 種別 |
---|---|---|
16 | 15 | 人間 |
4 | 4 | 犬 |
3 | 3 | 鳥 |
注意.
サンプルで使用するテーブルは説明のため正規化を行っていなかったり,一般的でない列が含まれている場合があります.ご容赦ください.