トップDML集計関数 ≫ 検索条件に集計関数を使用する

検索条件に集計関数を使用する

検索条件を指定してレコードを選択する場合,通常はWHERE句を使用しますが,集計関数はWHERE句で使用することはできません.集計関数を使用して集計した値を検索条件に使用する場合はHAVING句を使用します.

HAVING

HAVING句を使用すると集計関数によって集計されたデータや,GROUP BY句によってグループ化されたデータに対し,検索条件を指定することができます.

SELECT 集計キー1, 集計キー2, ...,
    集計関数(列名1), 集計関数(列名2), ...
FROM テーブル名
GROUP BY 集計キー1, 集計キー2, ...
HAVING 条件式

なお,HAVING句は必ずしもGROUP BY句と併用する必要はありません.グループ化して集計しない場合は以下のようにGROUP BY句を省略することができます.

SELECT 集計関数(列名1), 集計関数(列名2), ...
FROM テーブル名
HAVING 条件式

SQL サンプル

例として以下のテーブル(従業員マスタ)から従業員の年齢の合計と平均を求めます.

従業員マスタ

従業員コード従業員名年齢種別
A0001チャーリー・ブラウン15人間
A0002ペパーミント・パティ15人間
B0001スヌーピー4
C0001ウッドストック3

従業員マスタから平均年齢が15歳以上の種別を取得する場合は以下のようにSQLを書きます. なお以下のサンプルは分かりやすいようにAS句を使用して列に別名をつけています.

SQL

SELECT 種別, AVG(年齢) AS 年齢の平均
FROM 従業員マスタ
GROUP BY 種別
HAVING AVG(年齢) >= 15

結果

種別年齢の平均
人間15

注意.
サンプルで使用するテーブルは説明のため正規化を行っていなかったり,一般的でない列が含まれている場合があります.ご容赦ください.