商業(yè)數(shù)據(jù)分析--使用SQL計算復購周期

評價一個商業(yè)產品好不好,我們可以使用NPS、退款率、產品的使用效果等指標。

  • NPS是推薦值,是用戶向其他人推薦產品的可能性,凈推薦值(NPS)=(推薦者數(shù)/總樣本數(shù))×100%-(貶損者數(shù)/總樣本數(shù))×100%。

  • 退款率,是退款的用戶占比。

  • 產品使用效果,是產品承諾給用戶的效果,在用戶使用之后,是不是真的能達到,比如下面某APP商業(yè)產品,說開通會員更快找到另一半,用戶是不是能夠更快的找到另外一半,就是效果的體現(xiàn)。

商業(yè)產品效果

還有一個指標,能夠很好的體現(xiàn)產品效果---復購。復購是指用戶多次購買。如果用戶不滿意,那肯定不會多次購買(剛需品除外)。復購的維度比較多,比如金額、品類等,這里主要討論周期。

如果我們能夠計算出大部分用戶的復購周期,那么,我們就能精細化運營。當?shù)竭_一定的周期時,就可以通過發(fā)優(yōu)惠券或是其他的運營方式觸達用戶。下面給大家分享一下怎么用sql計算用戶的復購周期。

下表是不同用戶在不同時間的下單情況。表名:order_user,字段名稱:a.用戶名稱---customer_name,b.訂單時間---order_date

表名

思路:

  1. 把訂單時間往后位移一行。

  2. 用訂單時間減去位移后的時間,就得到了周期。

  3. 以周期進行聚合,得到了不同周期的分布。

第一步:位移

使用lag函數(shù)進行位移。lag(order_date,1)中兩個參數(shù),第一個參數(shù)是需要位移的字段,第二個字段是位移幾行,在這里讓訂單時間往后位移一行得到lag1字段。

以customer_name進行開窗,然后以order_date進行排序,可以看到用戶的每個訂單時間都往后移動了一行。

select 
    customer_name,
    order_date,
    lag(order_date,1) over(partition by customer_name order by order_date asc) as lag1
from 
    order_user
位移

第二步:計算周期

然后使用訂單時間減去位移后的時間,得到了周期。

select
    customer_name,
    order_date,
    lag1,
    datediff(order_date,lag1) as diff
from 
    (
    select 
        customer_name,
        order_date,
        lag(order_date,1) over(partition by customer_name order by order_date asc) as lag1
    from 
        order_user
    )a
計算周期

第三步:確定周期分布

最后以周期進行聚合,求次數(shù),得到了不同周期的次數(shù)。注意:

  • 對周期進行排序,這樣就能得到從小到大的順序;

  • 排除null,位移以后第一訂單時間,對應的位移值是null,需要排除。

select
    diff as '周期',
    count(*) as '次數(shù)'
from 
    (
    select
        customer_name,
        order_date,
        lag1,
        datediff(order_date,lag1) as diff
    from 
        (
        select 
            customer_name,
            order_date,
            lag(order_date,1) over(partition by customer_name order by order_date asc) as lag1
        from 
            order_user
        )a
    )b
where
    diff is not null 
group by 
    diff
order by 
    diff
分布

完整版SQL

完整版的SQL中,我使用了with創(chuàng)建了一個臨時表,表名就是order_user,大家可以在網(wǎng)上搜索一下,如果有疑問可以私信我。

with order_user as ( 
select 
     customer_name,
     date(order_date) as order_date
from 
    chaoshi.order 
where 
    Customer_Name in (
    '曾惠','許安','韋松'
    )
group by 
    customer_name,
    order_date
order by    
    customer_name,
    date(order_date)  
)


select
    diff as '周期',
    count(*) as '次數(shù)'
from 
    (
    select
        customer_name,
        order_date,
        lag1,
        datediff(order_date,lag1) as diff
    from 
        (
        select 
            customer_name,
            order_date,
            lag(order_date,1) over(partition by customer_name order by order_date asc) as lag1
        from 
            order_user
        )a
    )b
where
    diff is not null 
group by 
    diff
order by 
    diff
    ;

得到了周期分布,就可以交付給運營同學,針對不同的用戶進行精細化運營。

  • gongzhongh:數(shù)有道
  • gongzhongh:數(shù)有道
  • gongzhongh:數(shù)有道
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容