SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

ビジネスデータ解析のためのSQL入門

SQLでRFM分析に挑戦する

ビジネスデータ解析のためのSQL入門 第3回

  • X ポスト
  • このエントリーをはてなブックマークに追加

 本連載ではビジネスデータ解析でデータベースから情報を取得して活用する必要がある方を対象に、ビジネスデータ解析でよく使われる実践的なSQL例を示し、解説します。前回はバスケット分析と時系列分析について取り上げました。今回は顧客分析の代表的な手法の一つであるRFM分析を題材に、具体的な実行例でSQLでのデータ解析に挑戦します。

  • X ポスト
  • このエントリーをはてなブックマークに追加

対象読者

  • SQLの基本は理解しているが、より実践的な分析に取り組みたい方

サンプルの動作確認環境

  • PostgreSQL
  • CentOS6.7

データの準備

 本稿で用いるサンプルデータとして、購買履歴のテーブルを準備しました。

 サンプルデータの作成ためのSQLを、以下に示しておきます。

リスト1 購買履歴 テーブルの作成(create_table_sales_history.sql)
create table sales_history(
item_name char(12),  (商品名)
item_category char(12 ),  (商品カテゴリ)
date date,  (購買日)
place char(8),  (購買地域・場所)
user_id char(8),  (顧客コード)
price int  (料金)
);
リスト2 購買履歴 データの挿入(insert_sales_history.sql)
insert into sales_history values
('鮭','food','2017/5/29','AB Store','UID0001','250'),
('豆乳','food','2017/5/29','AB Store','UID0001','250'),
('豆乳','food','2017/5/30','AB Store','UID0001','200'),
('鮭','food','2017/5/30','AB Store','UID0001','350'),
('卵','food','2017/5/30','AB Store','UID0001','200'),
('鮭','food','2017/5/30','AB Store','UID0001','350'),
('牛肉','food','2017/6/1','AB Store','UID0001','450'),
('牛肉','food','2017/6/2','AB Store','UID0001','450'),
('深皿','zakka','2017/6/3','AB Store','UID0002','980'),
('卵','food','2017/6/4','AB Store','UID0001','250'),
('豆乳','food','2017/6/4','AB Store','UID0003','250'),
('卵','food','2017/6/5','AB Store','UID0001','250'),
('卵','food','2017/6/6','AB Store','UID0001','250'),
('鮭','food','2017/6/7','AB Store','UID0001','250'),
('鮭','food','2017/6/8','AB Store','UID0001','250'),
('卵','food','2017/6/9','AB Store','UID0001','250'),
('豆乳','food','2017/6/10','AB Store','UID0001','250'),
('卵','food','2017/6/10','AB Store','UID0001','250'),
('鮭','food','2017/6/10','AB Store','UID0004','250'),
('卵','food','2017/6/12','AB Store','UID0001','250'),
('卵','food','2017/6/12','AB Store','UID0001','250'),
('鮭','food','2017/6/13','AB Store','UID0001','250'),
('豆乳','food','2017/6/13','AB Store','UID0001','250'),
('深皿','zakka','2017/6/14','AB Store','UID0003','980'),
('深皿','zakka','2017/6/14','AB Store','UID0003','780')
;

RFM分析とは

 RFM分析とは、顧客の購買行動をRecency(最新購買日)、Frequency(購買頻度)、Monetary(購買金額)の3つの指標で分類し分析する手法です。

 第1回で取り上げたデシル分析は一つの指標での分析でしたが、RFM分析は複数の指標の分析となるため、顧客をより詳しく分析したい場合に用いられる手法です。

 RFM分析でもそれぞれの指標をランク分けします。この際、デシル分析のように10段階にしてもいいですが、3指標のため10×10×10=1000通りの分類になります。あまり多くても分析結果が分かりにくいため、3~5程度のランクに分けるのが一般的なようです。

図1 RFM分析による顧客分類の例
図1 RFM分析による顧客分類の例

 図1はRFM分析による顧客分類のイメージです。頻度が高いと常連、低いと新規、購買合計金額が多いと優良、といった分類をします。

 顧客が現在どのような状態か観測するため、また今後どのように変化すよう施策を打つべきか検討するため分析に利用します。

 集計したデータは活用のため、3指標のうちシンプルに2指標のみを使って2次元データで分析する方法もよく用いられます。今回は3指標の集計と2指標の集計を解説します。

次のページ
SQLサンプルと解説[1]

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
ビジネスデータ解析のためのSQL入門連載記事一覧

もっと読む

この記事の著者

WINGSプロジェクト 西 潤史郎(ニシ ジュンシロウ)

WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

山田 祥寛(ヤマダ ヨシヒロ)

静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるReact実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/10346 2017/08/04 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング