1. 程式人生 > 其它 >復購率/回購率/新購人數

復購率/回購率/新購人數

技術標籤:SQL資料庫

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)就是新增使用者,因為一個使用者對應一個月份