集計関数は、複数の値をまとめて合計・平均・件数などを求めるための関数です。SQLでは「どの値を数えるか」と「どの単位でまとめるか」を分けて考えましょう。
この記事では代表的な関数とNULLの扱いを確認します。集計結果に条件を付ける練習は、最後の無料noteへ進めます。
1.代表的な集計関数
| SQLの関数 | 役割 |
|---|---|
| SUM(売上) | 売上の合計 |
| AVG(売上) | 売上の平均 |
| MAX(売上) | 売上の最大値 |
| MIN(売上) | 売上の最小値 |
| COUNT(*) | 行数 |
| COUNT(売上) | 売上がNULLでない行数 |
2.COUNT(*)とCOUNT(列)を区別する
売上の値が100・200・NULLの3行なら、COUNT(*)は3、COUNT(売上)は2です。NULLを0と見なすのではなく、AVG(売上)はNULL以外の100と200から150を求めます。SUMは300です。
該当する行がない場合、COUNTは0になりますが、SUMなどはNULLになることがあります。空の集合と、合計0になる集合を区別してください。
3.GROUP BYで地域ごとに集計する

SELECT 地域, SUM(売上) AS total_sales
FROM sales_table
GROUP BY 地域;
GROUP BYなしなら表全体を、GROUP BY 地域なら地域ごとを集計します。集計前に対象行を絞るのはWHERE、集計結果で地域を絞るのはHAVINGです。
4.SQLとExcelの関数名を混同しない
ExcelにもSUM・AVERAGE・SUMIF・SUMIFS・COUNTIF・COUNTIFSなどの関数があります。目的が似ていても、SQLの構文とは異なります。SQLにはSUMIFという同じ形の標準集計関数を使うのではなく、WHEREやCASEなどを組み合わせて条件付きの集計を考えます。
理解を確かめる確認問題
売上が100・NULL・200の3行で、COUNT(*)とCOUNT(売上)はそれぞれいくつでしょうか。
解答・解説を見る
COUNT(*)は3、COUNT(売上)は2です。COUNT(列)はその列がNULLでない行を数えます。
まとめ:数える対象と集計単位を先に決める
COUNTの対象、NULLの扱い、GROUP BYの単位を確認すると、関数を使い分けやすくなります。次は、集計する行の条件と合計値の条件を比較しましょう。

コメント