目次
本記事概要
対象者
- SQL初心者の方。
- 主にPMやマーケターの方向け。
目的
- CASE式を使って、効率よく集計ができるようになる!
筆者
- コインチェックという仮想通貨の会社でマーケティング部の部長をしてます(https://twitter.com/sampling2x)
練習環境
【SQL練習】サンプルデータベースを用意する
で紹介したsakiraデータベースのpaymentテーブルを使います。
まだ自分のパソコンでSQLを叩く環境がない方は、非常に簡単なので、
上記の記事を参考に環境を作ってみてください。
ちなみにこの記事をさらっと見るだけでも、充分CASE式について理解が深まると思います。
SQLのCASE式で効率よく集計しよう!
paymentテーブル概要

ごく一般的な内容です。
今回はこのpaymentテーブルのamountカラムを使います。
sum case whenで効率よく集計してみる
Q.すべての決済履歴を大口取引・一般的な取引・小口取引の3つに分けて、その割合を調べたいと考えます。
※大口取引は10ドル以上/一般的な取引は5ドル以上10ドル未満/小口取引は5ドル未満とします。
集計イメージは以下です。
all | large | medium | small |
16,049 | 114 | 3,843 | 12,092 |
CASE式を使わない場合、以下のようにWHERE句で条件を指定して、4回抽出することになると思います。
すごくめんどくさいですよね。
そこでSUM CASE WHENの出番です。
以下のように書くことで条件分岐をしてくれるので、非常に便利です。
10ドル以上の大口決済は全体の約0.7%しかないことがわかります。
ここから大口決済をしているお客様(ここではcustomer_id)をサブクエリで抽出して、その属性を分析するなどは非常におもしろそうです。
この記事ではあくまでもSUM CASE WHENの使い方にフォーカスしているので、突っ込んだ分析には言及しませんが、ぜひお時間ある方はトライしてみてください。