集約関数とCASE WHEN
メニューを表示するにはスワイプしてください
SQLでグループ化された分析を行う場合、SUM、COUNT、AVGなどの集計関数によってデータを要約可能です。しかし、各グループ内の特定の行だけを集計したい場合があります。ここでCASE WHENと集計関数を組み合わせることで、条件を指定して集計対象となる行を制御できます。これにより、条件に合致する行のみをカウント、合計、平均することが可能になります。
123456SELECT customer_id, SUM(CASE WHEN transaction_type = 'purchase' THEN amount ELSE 0 END) AS total_purchases, SUM(CASE WHEN transaction_type = 'deposit' THEN amount ELSE 0 END) AS total_deposits FROM transactions GROUP BY customer_id;
このクエリは条件付き集計の仕組みを示しています。CASE WHEN式をSUMの内部に配置することで、集計に含める行を制御します。各customer_idごとに購入と入金の合計金額を個別に算出します。transaction_typeが条件(例:'purchase')に一致する場合、amountが合計に加算され、それ以外の場合は0が加算されます。この方法により、1つのグループ化クエリで異なる取引タイプの合計を別々に作成でき、レポートの精度と柔軟性が向上します。
123SELECT COUNT(CASE WHEN amount > 100 THEN 1 END) AS transactions_above_100 FROM transactions;
1. 集約関数内でCASE WHENを使用すると、どのような効果がありますか?
2. SUMとCASE WHENを使って「refund」取引の合計金額を計算するために空欄を埋めてください。
すべて明確でしたか?
フィードバックありがとうございます!
セクション 1. 章 19
AIに質問する
AIに質問する
何でも質問するか、提案された質問の1つを試してチャットを始めてください
セクション 1. 章 19