復購率/回購率/新購人數
阿新 • • 發佈:2021-02-20
1. 回購率
#回購率第一步
select date_month,userid from orderr group by date_month,userid order by date_month
這裡不論1號使用者在本月購買多少次,只要購買就1,否則就0
#回購率第二步
select t1.date_month,count(t1.date_month),count(t2.date_month) from
(select date_month,userid from orderr group by date_month,userid) t1
left join
(select date_month,userid from orderr group by date_month,userid) t2
on t1.userid=t2.userid and month(t1.date_month) - month(t2.date_month) = 1
group by t1.date_month
這一步把第一步的表內連線,兩表相連,月份聚合,計算總人數,和回購人數
2. 復購率
#復購第一步
select userid,date_month,count(distinct orderid) ct from orderr group by userid, date_month
這一步注意1號使用者購買了2筆訂單,但是有一筆訂單是組合商品,即一個訂單中包括兩個商品100和200,所以一共顯示3條,聚合的時候不要把orderid聚合,因為要把訂單去重後相加,得到本月購買次數總和,count(distinct orderid)
#復購第二步
select date_month,count(1) sm,count(if(ct>1,1,null)) from (select userid,date_month,count(distinct orderid) ct from orderr group by userid,date_month order by userid,orderid) t
group by date_month
3. 每月新購人數
select userid, min(date_month) as firstmon from `orderr` group by userid
第一步先求出每個使用者的首購月份,一個使用者對應一個月份
select firstmon as `month`,count(distinct userid) as 'new'
from(select userid, min(date_month) as firstmon from `orderr` group by userid) t group by firstmon
求和的時候count(userid)就是新增使用者,因為一個使用者對應一個月份
完