集約関数とは?しゅうやくかんすう
集約関数とは、複数の行をまとめて1つの値を返す関数。COUNT・SUM・AVG・MAX・MINがあり、GROUP BY句を付けるとグループごとに1行を返す。選択リストにはグループ化に使った列と集約関数しか書けず、絞り込みは行を選ぶWHEREとグループを選ぶHAVINGで段が分かれる。
最終更新:2026-10-06
この語が出る過去問を解く →背景
業務が本当に必要とするのは明細そのものではなく、件数・合計・平均といった要約である。これをアプリケーション側で1行ずつ読んで足すと通信量も時間もかさむため、集合をまとめる操作をSQL側に持たせた。試験では、FROM→WHERE→GROUP BY→HAVING→SELECT→ORDER BYという評価順序を理解しているかが、書ける/書けない場所の問いとして繰り返し出る。
具体例
受注明細から商品別の売上を出すなら、SELECT 商品コード, SUM(数量 \* 単価) FROM 受注明細 GROUP BY 商品コード HAVING SUM(数量 \* 単価) >= 1000000。100万円未満の商品を落とす条件は行ではなくグループへの条件なので、WHEREではなくHAVINGに書く。
試験での引っ掛け
NULLの扱いが最大の的。COUNT(\*)は行数なのでNULLも数えるが、COUNT(列名)はその列がNULLの行を数えず、SUM・AVGもNULLを無視するのでAVGはNULLを0として平均しない。またWHERE句に集約関数は書けない(グループがまだ作られていないため)。1行もヒットしないとき、SUMはNULL、COUNTは0を返す点も違う。
関連用語
出た過去問
出典:平成31年度 春期 データベーススペシャリスト試験 午前Ⅱ 問14(IPA)解説で登場
ある電子商取引サイトでは、会員の属性を柔軟に変更できるように、“会員項目”表で管理することにした。“会員項目”表に対し、次の条件でSQL文を実行して結果を得る場…
正解:MAX
要点:最新行の採用と横持ち集約の両方をMAXで実現する
同じ会員番号・項目名の中で最も大きい行番号の値を採用するので、内側の副問合せではグループごとの行番号の最大値を求める必要がある。外側では項目名ごとに1行しかない値を1行にまとめるため、集約関数で取り出す。いずれもMAXを入れれば、該当しない場合の値はNULLのまま残る。
出典:令和3年度 秋期 データベーススペシャリスト試験 午前Ⅱ 問10(IPA)解説で登場
ある電子商取引サイトでは、会員の属性を柔軟に変更できるように、"会員項目"表で管理することにした。"会員項目"表に対し、次の条件でSQL文を実行して結果を得る場…
正解:MAX
要点:MAXで最新行を選び、CASE式の集約で行を列に展開する
同一の会員番号・項目名の中で最も大きい行番号の行を採用するので、副問合せでは行番号の最大値を求める必要がある。また外側では、条件に合致しない行がNULLになるCASE式を集約して1行にまとめる(いわゆる行から列への転置)ため、NULLを無視して値を拾える集約関数が必要になる。どちらもMAXで満たせる。
出典:令和4年度 秋期 データベーススペシャリスト試験 午前Ⅱ 問7(IPA)解説で登場
"商品"表と"商品別売上実績"表に対して、SQL文を実行して得られる売上平均金額はどれか。 〔SQL文〕 SELECT AVG(売上合計金額) AS 売上平均金…
正解:150
要点:AVGなど集約関数はNULLの行を件数に含めない
左外部結合なので商品ランクがAの商品は3件とも残るが、売上実績のない商品の売上合計金額はNULLになる。AVGなどの集約関数はNULLの行を数に含めないため、値のある2件だけで平均が計算される。その結果、売上平均金額は150となる。
出典:令和6年度 秋期 データベーススペシャリスト試験 午前Ⅱ 問7(IPA)解説で登場
"商品"表と"商品別売上実績"表に対して、SQL文を実行して得られる売上平均金額はどれか。 〔SQL文〕 SELECT AVG(売上合計金額) AS 売上平均金…
正解:150
要点:AVGはNULL行を除外して平均を計算する
外部結合なので、商品ランクがAの3商品はすべて結果に残り、売上実績のない商品は売上合計金額がNULLになる。集約関数AVGはNULLの行を母数からも合計からも除外するため、実績のある2件だけで平均が計算される。50と250の平均で150となる。COUNT(*)で割った場合(100)との違いが問われている。
出典・参考
高度試験 午前I(高度午前I 相当)のシラバスの3 技術要素 > 3. データ操作 > (2) データベース言語に掲載されている用語です。
解説は資格暗記が独自に作成しています。過去問の出典は各問題に記載のとおりです。