応用情報暗記無料で始める

集約関数とは?しゅうやくかんすう

集約関数とは、複数行をまとめて1つの値を返す関数で、COUNT・SUM・AVG・MAX・MINが基本になる。GROUP BYで作ったグループ単位に適用され、行を絞るWHERE句とグループを絞るHAVING句のどちらへ条件を置くかで結果が変わるため、絞り込みの対象が行かグループかを先に決めるのが要点。

最終更新:2026-10-06

試験情報

応用情報技術者試験の過去問では1問の解説で触れられています。

応用情報技術者試験の頻出用語/テクノロジ系

この語が出る過去問を解く →

背景

1行ずつ取り出してアプリ側で合計していた構成では、通信量も処理時間もデータ量に比例して増えた。集計をDBMS側で済ませて結果だけを返せば転送量が桁で減り、索引や統計情報を使った最適化も効く。応用情報ではSQLの記述としても、性能設計上の選択肢としても問われる。

具体例

部門ごとの平均給与を出しつつ在籍3人未満の部門を除くなら、GROUP BY 部門コード に HAVING COUNT(*) >= 3 を付ける。特定年度の入社者に限る条件は行単位なのでWHERE句へ置く。この役割分担はPostgreSQLでもOracle Databaseでも共通で、製品差がない。

試験での引っ掛け

COUNT(*)は行数を数えるが、COUNT(列名)はNULLを除いて数えるため値が食い違う。AVGもNULLを除いた件数で割るので、NULLを0とみなした平均とは一致しない。WHERE句に集約関数は書けず、グループへの条件はHAVING句にしか置けない点も定番の誤り。

関連用語

出た過去問

解説は資格暗記が独自に作成しています。過去問の出典は各問題に記載のとおりです。

この語が出る過去問を解く →

試験での特徴
  • 1問の解説で触れられる
  • 分野:テクノロジ系
  • COUNT(*)は行数を数えるが、COUNT(列名)はNULLを除いて数えるため値が食い違う。