SQL

【SQL】CASE式で効率よく集計する(CASE WHEN)

本記事概要

対象者

  • SQL初心者の方。
  • 主にPMやマーケターの方向け。

目的

  • CASE式を使って、効率よく集計ができるようになる。

練習環境

【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の使い方にフォーカスしているので、突っ込んだ分析には言及しませんが、ぜひお時間ある方はトライしてみてください。

参考

ABOUT ME
Okada Shogo
某Web系企業のマーケター 。インハウスでのweb広告運用やデータ分析をやってます。