Ceeds Academy教材アプリ教材・症状語・タグで検索
索引グラフ試す
プログラミング言語▸SQL

SQL: 集計(COUNT / SUM / GROUP BY)

hands-on所要 25分最新草稿
前提: SQL: 追加・更新・削除(INSERT / UPDATE / DELETE)→次: DB: ORM(SQLModel / SQLAlchemy で Python から操作)
意味グラフ(この教材と内容的に近い教材・1ネスト)
例え(Analogies)
GROUP BY=山分け集計

GROUP BYは「同じ種類でまとめてから数える/合計する」。クラスごとの平均点を出すような操作。HAVINGはまとめた後の絞り込み。

概要

📍 programming-languages ▸ SQL ▸ 集計 | 種別: hands-on | facts_as_of 2026-06(PostgreSQL 18 / SQLite)

公式ドキュメント — hands-on

🎞 スライド

集計=まとめて数える・足す

COUNT / SUM / AVG / MAX / MIN

GROUP BY(テキスト図)

行ごと グループごと
Tokyo 25 ┐
Tokyo 31 ├─ GROUP BY city ─▶ Tokyo: 2件
Osaka 40 ┘ Osaka: 1件

WHERE と HAVING の違い

WHERE … 行を絞る(集計の前)
HAVING … グループを絞る(集計の後)

—
出典(sources)

PostgreSQL 18 docs (Aggregate Functions) ; 2026-06確認

確認問題(Review-Questions)
city ごとの人数を出すSQLは?コード
基礎公式
解答・解説▾ 開く

SELECT city, COUNT(*) FROM users GROUP BY city;

グループ化した後の絞り込みに使う句は?(WHEREとの違い)択一
基礎公式
解答・解説▾ 開く

HAVING。WHEREは行単位の絞り込み、HAVINGはグループ(集計後)の絞り込み。

目次
例え概要公式ドキュメント出典確認問題
鮮度
最新
更新: 2026-06-15
次回棚卸し: 2027-06-15
周期: 12か月
版: SQL (PostgreSQL 18 / SQLite)

概要

集計関数(COUNT/SUM/AVG/MAX/MIN)とグループ化(GROUP BY)。グループごとに数えたり合計したりし、グループの絞り込みは HAVING で行う。

公式ドキュメント準拠(PostgreSQL 18 / SQLite)

SELECT COUNT(*) FROM users;
SELECT city, COUNT(*) FROM users GROUP BY city;
SELECT city, AVG(age) FROM users
GROUP BY city
HAVING COUNT(*) > 5;
  • COUNT/SUM/AVG/MAX/MIN が集計関数。
  • GROUP BY=グループ化、HAVING=グループの絞り込み(WHERE は行の絞り込み)。

出典: PostgreSQL: Aggregate Functions

🧭 誤解訂正集

よくある誤解 正しい理解
集計の絞り込みも WHERE グループの絞り込みは HAVING(WHERE は行用)
GROUP BY なしでも列を混ぜられる 非集計列は GROUP BY に入れるか集計する必要がある
COUNT(*) と COUNT(列) は同じ COUNT(列) は NULL を数えない

📖 用語

  • 集計関数 … 複数行をまとめて1値にする(COUNT/SUM/AVG/MAX/MIN)。
  • GROUP BY … 同じ値の行をグループにまとめる。
  • HAVING … グループ化後の結果を絞り込む条件。
  • WHERE と HAVING … 行を絞る(集計前)/グループを絞る(集計後)。

✅ 確認の目安(can-do)

GROUP BY と集計関数でグループ別集計を書け、**「行の絞り込みは WHERE・グループの絞り込みは HAVING」**の使い分けを説明できる。

⚠️ エラー復旧集

症状 原因 復旧
must appear in GROUP BY 非集計列を SELECT GROUP BY に加える or 集計する
集計を WHERE で絞ろうとした WHERE は行用 HAVING を使う