集約関数とは?しゅうやくかんすう
集約関数とは、複数行をまとめて1つの値を返す関数で、COUNT・SUM・AVG・MAX・MINが基本になる。GROUP BYで作ったグループ単位に適用され、行を絞るWHERE句とグループを絞るHAVING句のどちらへ条件を置くかで結果が変わるため、絞り込みの対象が行かグループかを先に決めるのが要点。
最終更新:2026-10-06
この語が出る過去問を解く →背景
1行ずつ取り出してアプリ側で合計していた構成では、通信量も処理時間もデータ量に比例して増えた。集計をDBMS側で済ませて結果だけを返せば転送量が桁で減り、索引や統計情報を使った最適化も効く。応用情報ではSQLの記述としても、性能設計上の選択肢としても問われる。
具体例
部門ごとの平均給与を出しつつ在籍3人未満の部門を除くなら、GROUP BY 部門コード に HAVING COUNT(*) >= 3 を付ける。特定年度の入社者に限る条件は行単位なのでWHERE句へ置く。この役割分担はPostgreSQLでもOracle Databaseでも共通で、製品差がない。
試験での引っ掛け
COUNT(*)は行数を数えるが、COUNT(列名)はNULLを除いて数えるため値が食い違う。AVGもNULLを除いた件数で割るので、NULLを0とみなした平均とは一致しない。WHERE句に集約関数は書けず、グループへの条件はHAVING句にしか置けない点も定番の誤り。
関連用語
出た過去問
出典:令和5年度 秋期 応用情報技術者試験 午前 問28(IPA)解説で登場
更新可能なビューを作成するSQL文はどれか。ここで、SQL文中に現れる基底表は全て更新可能とする。
正解:CREATE VIEW 高額商品(商品番号, 商品名, 商品単価) AS SELECT 商品番号, 商品名, 商品単価 FROM 商品 WHERE 商品単価>1000
要点:更新可能ビューは単一表の選択と射影に限られる
ビューが更新可能であるためには、ビューの各行が基底表の1行に一意に対応し、更新内容を基底表へ一意に反映できる必要がある。単一の表からWHERE句で行を絞り、列をそのまま射影しただけのビューはこの条件を満たすので更新可能である。DISTINCT、GROUP BY、集約関数を含むビューは元の行との対応が失われるため更新できない。
出典・参考
公式シラバスの3 技術要素 > 3. データ操作 > (2) データベース言語に掲載されている用語です。
解説は資格暗記が独自に作成しています。過去問の出典は各問題に記載のとおりです。