【しゅうやくかんすう】
集約関数(SUM/COUNT/AVG) とは?
💡 複数行のデータを「まとめて1つの値」にする関数たち
📌 このページのポイント
- SUM(合計)、COUNT(件数)、AVG(平均)、MAX(最大)、MIN(最小)が代表的
- GROUP BYと組み合わせてグループごとの集計ができる
- NULLは集約関数の計算から自動的に除外される(COUNT(*)を除く)
- HAVINGを使えば集計結果に対して条件を絞れる
集約関数って具体的にどう使うの?
例えば「SELECT COUNT(*) FROM users」で全ユーザー数、「SELECT SUM(price) FROM orders」で売上合計、「SELECT AVG(age) FROM users」で平均年齢が出せる。複数行のデータを1つの数値にまとめてくれるよ。
COUNT(*)とCOUNT(カラム名)って違うの?
COUNT(*)はNULLを含む全行を数える。COUNT(email)だとemailがNULLの行は数えない。「ユーザーの総数」ならCOUNT(*)、「メールアドレスを登録しているユーザー数」ならCOUNT(email)、という使い分けをするよ。
AVGを使うときにNULLがあるとどうなるの?
NULLの行は計算から除外される。例えば5人のうち2人のageがNULLなら、3人の平均が計算される。「NULLを0として計算してほしい」場合は「AVG(COALESCE(age, 0))」のように明示的にNULLを0に変換する必要がある。
集約関数ってSELECTに普通のカラムと一緒に書けるの?
まとめ:ざっくりこれだけ覚えればOK!
集約関数って出てきたら「複数行のデータをまとめて合計・件数・平均などの1つの値にする関数」と思えばだいたいOK!
📖 おまけ:英語の意味
「Aggregate Function」 = 集約する(Aggregate)関数(Function)
💬 Aggregateは「集めてまとめる」という意味。複数のデータを1つに集約するイメージ