投稿

[Python 100日チャレンジ] Day 77 - SQL集計関数とGROUP BY

SQLのCOUNT、SUM、AVG、GROUP BYを使って、データベース上で集計する方法を学びます。

[Python 100日チャレンジ] Day 77 - SQL集計関数とGROUP BY

集計関数

SQLには、件数、合計、平均などを計算する集計関数があります。

1
2
3
SELECT COUNT(*) FROM orders;
SELECT SUM(amount) FROM orders;
SELECT AVG(amount) FROM orders;

アプリ側ですべての行を取り出して計算するより、データベースで集計したほうが効率的です。

GROUP BY

カテゴリ別に集計するにはGROUP BYを使います。

1
2
3
SELECT product_id, SUM(amount) AS total
FROM orders
GROUP BY product_id;

商品別、月別、ユーザー別などの集計に使えます。

HAVING

集計後の結果に条件を付けたい場合はHAVINGを使います。

1
2
3
4
SELECT product_id, SUM(amount) AS total
FROM orders
GROUP BY product_id
HAVING total >= 10000;

Pythonで集計結果を表示する

1
2
3
4
5
6
7
8
cursor.execute("""
SELECT product_id, SUM(amount)
FROM orders
GROUP BY product_id
""")

for product_id, total in cursor.fetchall():
    print(product_id, total)

今日のゴール

SQL集計を使うと、データベース内で必要な数値をまとめられます。COUNT、SUM、AVG、GROUP BYを分析の基本セットとして覚えましょう。

この投稿は投稿者によって CC BY 4.0 の下でライセンスされています。