集約関数とは?
集約関数とは、複数行をまとめて1つの値を返す関数。GROUP BY句と組み合わせるとグループごとに1行を返す。
データベーススペシャリスト試験の過去問では4回出題されています(2019年度〜2024年度)。
しゅうやくかんすう
集約関数の意味
複数行をまとめて1つの値を返す関数。GROUP BY句と組み合わせるとグループごとに1行を返す。
集約関数の具体例
SELECT 部門コード, AVG(給与) FROM 社員 GROUP BY 部門コード。
集約関数は試験でどう引っ掛けられる?
COUNT(\*)は行数を数えるのでNULLも含むが、COUNT(列名)はその列がNULLの行を数えない。SUMやAVGもNULLを無視する。
集約関数と関連する用語
集約関数が出た過去問
ある電子商取引サイトでは、会員の属性を柔軟に変更できるように、“会員項目”表で管理することにした。“会員項目”表に対し、次の条件でSQL文を実行して結果を得る場…
正解:MAX
要点:最新行の採用と横持ち集約の両方をMAXで実現する
同じ会員番号・項目名の中で最も大きい行番号の値を採用するので、内側の副問合せではグループごとの行番号の最大値を求める必要がある。外側では項目名ごとに1行しかない値を1行にまとめるため、集約関数で取り出す。いずれもMAXを入れれば、該当しない場合の値はNULLのまま残る。
出典:令和1年度 春期 データベーススペシャリスト試験 am2 問14(IPA)ある電子商取引サイトでは、会員の属性を柔軟に変更できるように、"会員項目"表で管理することにした。"会員項目"表に対し、次の条件でSQL文を実行して結果を得る場…
正解:MAX
要点:MAXで最新行を選び、CASE式の集約で行を列に展開する
同一の会員番号・項目名の中で最も大きい行番号の行を採用するので、副問合せでは行番号の最大値を求める必要がある。また外側では、条件に合致しない行がNULLになるCASE式を集約して1行にまとめる(いわゆる行から列への転置)ため、NULLを無視して値を拾える集約関数が必要になる。どちらもMAXで満たせる。
出典:令和3年度 秋期 データベーススペシャリスト試験 am2 問10(IPA)"商品"表と"商品別売上実績"表に対して、SQL文を実行して得られる売上平均金額はどれか。 〔SQL文〕 SELECT AVG(売上合計金額) AS 売上平均金…
正解:150
要点:AVGなど集約関数はNULLの行を件数に含めない
左外部結合なので商品ランクがAの商品は3件とも残るが、売上実績のない商品の売上合計金額はNULLになる。AVGなどの集約関数はNULLの行を数に含めないため、値のある2件だけで平均が計算される。その結果、売上平均金額は150となる。
出典:令和4年度 秋期 データベーススペシャリスト試験 am2 問7(IPA)"商品"表と"商品別売上実績"表に対して、SQL文を実行して得られる売上平均金額はどれか。 〔SQL文〕 SELECT AVG(売上合計金額) AS 売上平均金…
正解:150
要点:AVGはNULL行を除外して平均を計算する
外部結合なので、商品ランクがAの3商品はすべて結果に残り、売上実績のない商品は売上合計金額がNULLになる。集約関数AVGはNULLの行を母数からも合計からも除外するため、実績のある2件だけで平均が計算される。50と250の平均で150となる。COUNT(*)で割った場合(100)との違いが問われている。
出典:令和6年度 秋期 データベーススペシャリスト試験 am2 問7(IPA)
最終更新:2026-08-25/解説は資格暗記が独自に作成しています。 過去問の出典は各問題に記載のとおりです。