集約関数とGROUP BY
集約関数とGROUP BY
Section titled “集約関数とGROUP BY”集約関数とGROUP BYを使用することで、データをグループ化し、統計情報を取得できます。
集約関数の種類
Section titled “集約関数の種類”-- 行数を取得SELECT COUNT(*) FROM users;
-- 条件に合う行数を取得SELECT COUNT(*) FROM users WHERE status = 'active';
-- NULLを除外してカウントSELECT COUNT(email) FROM users;-- 合計を取得SELECT SUM(amount) FROM orders;
-- 条件に合う合計を取得SELECT SUM(amount) FROM orders WHERE status = 'completed';-- 平均を取得SELECT AVG(price) FROM products;
-- 条件に合う平均を取得SELECT AVG(price) FROM products WHERE category_id = 1;MAX / MIN
Section titled “MAX / MIN”-- 最大値を取得SELECT MAX(price) FROM products;
-- 最小値を取得SELECT MIN(price) FROM products;GROUP BYによるグループ化
Section titled “GROUP BYによるグループ化”基本的なGROUP BY
Section titled “基本的なGROUP BY”-- カテゴリごとの商品数を取得SELECT category_id, COUNT(*) AS product_countFROM productsGROUP BY category_id;複数のカラムでグループ化
Section titled “複数のカラムでグループ化”-- カテゴリとステータスごとの商品数を取得SELECT category_id, status, COUNT(*) AS product_countFROM productsGROUP BY category_id, status;HAVINGによるグループのフィルタリング
Section titled “HAVINGによるグループのフィルタリング”-- 商品数が10個以上のカテゴリを取得SELECT category_id, COUNT(*) AS product_countFROM productsGROUP BY category_idHAVING COUNT(*) >= 10;ユーザーごとの注文数と合計金額
Section titled “ユーザーごとの注文数と合計金額”SELECT user_id, COUNT(*) AS order_count, SUM(amount) AS total_amount, AVG(amount) AS avg_amountFROM ordersGROUP BY user_idORDER BY total_amount DESC;日次売上の集計
Section titled “日次売上の集計”SELECT DATE(created_at) AS order_date, COUNT(*) AS order_count, SUM(amount) AS daily_salesFROM ordersGROUP BY DATE(created_at)ORDER BY order_date DESC;集約関数とGROUP BYのポイント:
- 集約関数: COUNT、SUM、AVG、MAX、MIN
- GROUP BY: データをグループ化
- HAVING: グループをフィルタリング
- 実践例: ユーザーごとの集計、日次売上の集計
適切に集約関数とGROUP BYを使用することで、統計情報を効率的に取得できます。