圖解面試題:如何實現精細化運營?

【面試題】下面是2020年1月份某電商平臺的用戶行爲記錄表。

表中的數據如下:

業務問題:店鋪在對用戶進行盤點時發現,用戶運營過於粗放,沒能做到用戶分類運營。老闆想在下一個月對不同的用戶進行有針對性的營銷,達到降低成本提高收入,精細化運營的效果。怎麼辦?

【分析思路】

要想對用戶進行精細化運營,就要對用戶分類,然後對不同的用戶採取不同的運營策略。

涉及到用戶分類,可以用RFM分析方法。

一.什麼是RFM分析方法?

RFM分析方法是根據用戶的最近一次消費時間間隔(R)、消費頻率(F)、消費金額(M)來對用戶進行打分,進而將用戶按分數劃分爲不同的類型,然後對不同的用戶使用不同的運營策略,從而實現輔助精準運營。

RFM分析方法將用戶分爲以下8類:

本文重點是介紹如何用SQL實現RFM的案例應用,所以在看下面內容之前,確保你已經學會了《RFM分析法原理:如何對用戶按價值分類?》

二.如何用SQL實現RFM分析方法?

1.定義指標R、F、M

將指標定義中的“一段時間“定義爲1月份(30天)。

最近一次消費時間間隔(R):用戶最近一次消費距離現在(1月30日)多長時間了。

消費頻率(F):用戶一段時間內(1月份)消費了多少次。

消費金額(M):用戶一段時間內(1月份)的消費金額,對應表中的“消費金額“。

2.計算R、F、M值

根據RFM分析方法指標的定義,只需要“用戶行爲類型”中的“購買”值,可以先篩選(where)出用戶的所有“購買”記錄(下圖紅框的地方),做爲臨時表a。

select * 
from 用戶行爲記錄表 
where 用戶行爲類型=’購買’;

查詢結果:

(1)最近一次消費時間間隔(R)

R值:用戶最近一次消費距離現在(1月30日)多長時間了

R值=現在(2020-01-30)- 每個用戶最後一次購物日期

每個用戶最後一次購物日期,涉及到“每個問題“要想到《猴子 從零學會SQL》裏講過的用分組彙總來實現。

根據“用戶編號”分組,然後彙總(最後一次購買日期,就是找到日期的最大值,用匯總函數max)


select 用戶編號, max(用戶活躍日期) as 最後一次購物日期
from a
group by a.用戶編號;


將該查詢結果表示爲臨時表b。

然後就可以分析出R值=現在(2020-01-30)- 每個用戶最後一次購物日期

select 用戶編號,('2020-01-30'-b.最後一次購物日期) as 最近一次消費時間間隔R
from b;


(2)消費頻率(F)

消費頻率(F):用戶一段時間內(1月份)消費了多少次。

先篩選(where)出30天內所有的購買記錄。

select 用戶編號 
from a 
where datediff('2020-01-30',用戶活躍日期)<=30;

然後需要分析出“每位用戶的購買次數。“每位用戶”按用戶編號分組(group by),然後用匯總函數(count)求出購買次數。


select 用戶編號,count(*) as 消費頻率F
from a 
where datediff('2020-01-30',用戶活躍時間)<=30
group by 用戶編號;

(3)消費金額(M)

消費金額(M):用戶一段時間內(1月份)的消費金額,對應表中的“消費金額“。

先篩選(where)出30天內所有的購買記錄。

select 用戶編號
from a 
where datediff('2020-01-30',用戶活躍日期)<=30;

然後,分析出“每位用戶的總消費金額”,按用戶編號分組(group by),用匯總函數(sum)求出總消費金額。

 


select 用戶編號,sum(消費金額) as 總消費金額M
from a 
where datediff('2020-01-30',用戶活躍日期)<=30
group by 用戶編號;

至此,我們已經獲得了每一個用戶的R、F、M值,將其合併起來設爲表c,以便後續查詢:

2. 給R、F、M按價值打分

本案例的R、F、M打分規則定義如下:

打分過程及預期打分結果:


爲了實現上面的打分,可以使用SQL語句的條件判斷(case)對查詢條件做條件限制。其語法規則是:


先來看如何用條件判斷(case)實現R值打分

select c.用戶編號,
(case when c.R>15 then 1,
when c.R>10 and c.R<=15 then 2,
when c.R>5 and c.R<=10 then 3,
when  c.R>3 and c.R<=5 then 4,
when  c.R>0 and c.R<=3 then 5 
end) as R分
from c;

條件判斷(case)實現F值打分

select c.用戶編號,
(case when c.F<=1 then 1,
when c.F>1 and c.F<=3 then 2,
when c.F>3 and c.F<=5 then 3,
when c.F>5 and c.F<=7 then 4,
when c.F>7 then 5 
end) as F分
from c;

條件判斷(case)實現M值打分

select c.用戶編號,
(case when c.M<=500 then 1,
when c.M>500 and c.M<=1000 then 2,
when c.M>1000 and c.M<=1500 then 3,
when c.M>1500 and c.M<=2000 then 4,
when c.M>2000 then 5 
end) as M分
from c;

將上面的R、F、M值打分sql合併在一起:

select c.用戶編號,(case when c.R>15 then 1,
when c.R>10 and c.R<=15 then 2,
when c.R>5 and c.R<=10 then 3,
when  c.R>3 and c.R<=5 then 4,
when  c.R>0 and c.R<=3 then 5 
end) as R分,
(case when c.F<=1 then 1,
when c.F>1 and c.F<=3 then 2,
when c.F>3 and c.F<=5 then 3,
when c.F>5 and c.F<=7 then 4,
when c.F>7 then 5 
end) as F分,
(case when c.M<=500 then 1,
when c.M>500 and c.M<=1000 then 2,
when c.M>1000 and c.M<=1500 then 3,
when c.M>1500 and c.M<=2000 then 4,
when c.M>2000 then 5 
end) as M分
from c;

將評分結果表示爲臨時表d。

3. 求出所有用戶R、F、M評分的平均值

求平均值使用匯總函數(avg)

select avg(R分) as R分平均,
       avg(F分) as F分平均,
       avg(M分) as M分平均
from d;

4. 將每個用戶的R、F、M值與相應指標的平均值對比,確認用戶分類

目前我們已經得到了每個用戶的R分、F分和M分,也獲得了R、F、M這三個指標各自的平均值。

接下來需要將每一個用戶的【R分、F分、M分】與R分平均、F分平均、M分平均值】做比較,就可知道每一個用戶在【最近一次消費時間間隔(R)、消費頻率(F)、消費金額(M)】三個指標中是否高於平均水平,從而幫助後續對用戶進行分類。

先利用每個的R、F、M值與相應指標平均分作比較,將大於平均分的記爲高,否則記爲低:

select d.用戶編號,
(case when R分>R分平均 then '高' else '低' end) as R分類,
(case when F分>F分平均 then '高' else '低' end) as F分類,
(case when M分>M分平均 then '高' else '低' end) as M分類
from d 
inner join 
(select avg(R分) as R平均,
        avg(F分) asF平均,
        avg(M分) as M平均 
from d) as e;

5.用戶分類

根據上述分值比較情況,結合下面的分類規則對用戶分類:

select e.用戶編號,(case 
when R分類='高' and F分類='高' and M分類='高' then '重要價值用戶',
when R分類= '高' and F分類= then '高' and M分類= '高' then '重要發展用戶',
when R分類= '低' and F分類= '高' and M分類= '高' then'重要保持用戶',
when R分類='低' and F分類='低' and M分類= '高' then'重要挽留用戶',
when R分類= '高' and F分類= '高' and M分類='低' then '一般價值用戶',
when R分類= '高' and F分類='低' and M分類='低' then '一般發展用戶',
when R分類='低' and F分類= '高' and M分類='低' then '一般保持用戶',
when R分類='低' and F分類='低' and M分類='低' then '一般挽留用戶'end)as 用戶分類
from
(select d.用戶編號, 
  (case when R分>R分平均 then '高' else '低' end) as R分類,
  (case when F分>F分平均 then '高'else '低' end) as F分類,
  (case when M分>M分平均 then '高'else '低' end) as M分類
from d 
inner join (
select avg(R分) as R平均,
       avg(F分) asF平均,
       avg(M分) as M平均
from d)
) as e;


至此,我們就完成了用RFM分析方法、SQL對用戶分類。然後根據分析結果,就可以對用戶進行精細化運營啦。

三、如何進行精細化運營?

用戶分類後,如何精細化運營呢?

對用戶分類以後要做什麼呢?那就是針對每類用戶如何制定運營策略,這個具體公司業務不同,方法也不一樣。這裏舉例說明前4類用戶。

1)重要價值用戶,RFM三個值都很高,要提供vip服務

2)重要發展用戶,消費頻率低,但是其他兩個值很高,就要想辦法提高他的消費頻率

3) 重要保持用戶,最近消費距離現在時間較遠,也就是F值低,但是消費頻次和消費金額高。這種用戶,是一段時間沒來的忠實客戶。應該主動和他保持聯繫,提高復購率

4) 重要挽留客戶,最近消費時間距離現在較遠、消費頻率低,但消費金額高。這種用戶,即將流失,要主動聯繫用戶,調查清楚哪裏出了問題,並想辦法挽回。

這樣通過RFM分析方法來分析用戶,對用戶進行精細化運營。不斷將用戶轉化爲重要價值用戶。

推薦:如何從零學會sql?

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章