スポンサーリンク

【応用情報技術者試験】集計関数

集計関数は、複数の値をまとめて合計・平均・件数などを求めるための関数です。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の単位を確認すると、関数を使い分けやすくなります。次は、集計する行の条件と合計値の条件を比較しましょう。

参考:PostgreSQL:集計関数

コメント