Skip to the content.

最終更新日:2026年8月30日

まず結論

SQLの集計関数は、複数の行をまとめて件数・合計・平均・最大値などを求める関数です。

基本情報技術者試験では、まず次の4つを切り分けられれば十分です。

関数 求めるもの 判断ワード
COUNT 件数 何行あるか
SUM 合計 全部足す
AVG 平均 合計÷件数
MAX 最大値 一番大きい値

さらに WHERE がある場合は、次の順で考えます。

WHEREで対象行を絞る
↓
残った行に集計関数を使う

試験中は、

先にWHERE、あとで集計。COUNTは件数、SUMは合計。

と覚えると迷いにくくなります。

直感的な説明

次の売上表を考えます。

商品 数量
A 3
B 2
A 1
B 2

この表に集計関数を使うと、結果は次のようになります。

COUNT(*)
→ 行数を数える
→ 4

SUM(数量)
→ 数量を全部足す
→ 8

AVG(数量)
→ 数量の平均
→ 2

MAX(数量)
→ 一番大きい数量
→ 3

ここで、Aだけを対象にしたい場合は WHERE を使います。

SELECT AVG(数量)
FROM 売上
WHERE 商品 = 'A';

このSQLは、いきなり平均するのではありません。

Aの行だけ残す
→ 3, 1
↓
平均する
→ 2

この「絞ってから集計する」という順番が重要です。

定義・仕組み

COUNT:件数を数える

COUNT は、行や値の件数を数えるための集計関数です。

SELECT COUNT(*)
FROM 売上;

COUNT(*) は、表の行数を数えます。

4行ある
→ COUNT(*) = 4

試験では、COUNTSUM を混同しないことが重要です。

COUNT
→ 何件あるか

SUM
→ 値を全部足す

COUNT(*)とCOUNT(列名)の違い

COUNT(*) は行数を数えます。

一方、COUNT(列名) は、その列で NULL ではない値の件数を数えます。

例えば、次の表を考えます。

ID 備考
1
2 NULL
3

この場合、

COUNT(*)
→ 3

COUNT(備考)
→ 2

です。

COUNT(*)は行、COUNT(列名)はNULLを除いた値の件数。

SUM:合計する

SUM は、指定した列の数値を合計します。

SELECT SUM(数量)
FROM 売上;

数量が 3, 2, 1, 2 なら、

3 + 2 + 1 + 2
= 8

です。

AVG:平均する

AVG は、指定した列の平均値を求めます。

SELECT AVG(数量)
FROM 売上;

数量が 3, 2, 1, 2 なら、

(3 + 2 + 1 + 2) ÷ 4
= 2

です。

MAX:最大値を求める

MAX は、指定した列の最大値を返します。

SELECT MAX(数量)
FROM 売上;

数量が 3, 2, 1, 2 なら、最大値は 3 です。

ここで注意したいのは、MAX(数量)最大値を含む行全体を返すのではなく、数量列の最大値そのものを返すという点です。

WHEREは集計の前に効く

WHERE は、集計対象となる行を絞る条件です。

例えば、

SELECT SUM(数量)
FROM 売上
WHERE 商品 = 'B';

なら、処理のイメージは次のとおりです。

商品Bの行を残す
→ 2, 2
↓
SUMする
→ 4

試験では、SQLを左から読むより、次のように役割で読むと整理しやすくなります。

FROM
→ どの表か

WHERE
→ どの行を使うか

SELECTの集計関数
→ 残った行から何を求めるか

このテーマは基本情報技術者試験の「データベース」「SQL」と関係します。公式の出題範囲や最新シラバスは、IPA:試験要綱・シラバスについてから確認できます。

科目Aでどう出る?

科目Aでは、表と複数のSQL文を見て、実行結果を比較させる問題が出ます。

このタイプは、各SQLを一度に理解しようとせず、次の順で処理すると安定します。

1. WHEREがあるか確認する
2. 対象行だけ残す
3. COUNT / SUM / AVG / MAX の意味を確認する
4. 結果を計算する
5. 選択肢同士を比較する

選択肢を切る判断表

SQLの形 判断
COUNT(*) 行数を数える
SUM(列) 列の値を全部足す
AVG(列) 列の平均を求める
MAX(列) 列の最大値を求める
WHERE 条件 条件に合う行だけを対象にする

例えば、次のSQLを見たとします。

SELECT AVG(数量)
FROM 売上
WHERE 商品 = 'A';

試験中は、

WHERE 商品='A'
→ Aだけ残す

AVG(数量)
→ 残った数量の平均

と分解します。

GROUP BYがある場合

GROUP BY は、行をグループに分けて、グループごとに集計するときに使います。

SELECT 商品, SUM(数量)
FROM 売上
GROUP BY 商品;

結果は、商品ごとの合計になります。

A → 4
B → 4

つまり、

WHERE
→ 行を絞る

GROUP BY
→ 行をグループに分ける

SUM / AVG / COUNT / MAX
→ 各対象を集計する

と役割を分けます。

GROUP BY や集約関数を含むビューは更新できないと判断する問題もあります。関連する考え方は、ビューとは?元の表との違い・SELECT権限・更新可能ビューで整理しています。

どんな場面で使う?

集計関数は、表に保存された多数のデータを要約するときに使います。

例えば、売上データなら次のように使えます。

注文件数を知りたい
→ COUNT

売上金額の合計を知りたい
→ SUM

平均注文金額を知りたい
→ AVG

最大注文金額を知りたい
→ MAX

実務でも、一覧の全行を目で確認するのではなく、SQLで集計して全体の傾向を確認します。

データベースの表をどのように分割して重複や更新時異状を減らすかは、データベース正規化とは?も合わせて確認すると、表の設計とSQLによる集計の役割を分けて理解できます。

よくある誤解・混同

COUNTとSUMを同じものだと思う

違います。

例えば、数量が 3, 2, 1, 2 の4行なら、

COUNT(*) = 4
SUM(数量) = 8

です。

COUNTは件数、SUMは中身の合計。

WHEREを集計後に適用すると考える

基本的な問題では、WHERE で対象行を絞ってから集計します。

WHERE
↓
集計

という順で考えます。

MAXは最大の行を返す

MAX(数量) が返すのは、数量列の最大値です。

MAX(数量)
→ 3

その値を持つ行の他の列まで自動的に返すわけではありません。

COUNT(*)とCOUNT(列名)は必ず同じ

列に NULL があると結果が変わります。

COUNT(*)
→ 行数

COUNT(列名)
→ NULLでない値の件数

AVGはSUM÷COUNT(*)と必ず同じ

AVG(列名) は、通常その列の NULL を除いて平均します。

そのため、NULL を含む表では、単純に SUM(列名) ÷ COUNT(*) とすると一致しない場合があります。

FE試験では、NULL が明示されていない基本問題なら、まず通常の平均計算として考えれば十分です。

まとめ(試験直前用)

  • COUNT は件数
  • SUM は合計
  • AVG は平均
  • MAX は最大値
  • WHERE があれば、先に対象行を絞る
  • COUNT(*) は行数、COUNT(列名) はNULLでない値の件数
  • GROUP BY はグループごとに集計する

一言で覚えるなら、

先にWHEREで絞る。COUNTは数える、SUMは足す、AVGは平均、MAXは最大。

© 2024-2026 stemtazoo. All rights reserved.