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