集計関数は指定された列の様々な値を集計する関数です.列の合計を求める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 | 鳥 |
注意.
サンプルで使用するテーブルは説明のため正規化を行っていなかったり,一般的でない列が含まれている場合があります.ご容赦ください.