美文网首页
商业数据分析--使用SQL计算复购周期

商业数据分析--使用SQL计算复购周期

作者: 数有道 | 来源:发表于2022-04-10 12:45 被阅读0次

评价一个商业产品好不好,我们可以使用NPS、退款率、产品的使用效果等指标。

  • NPS是推荐值,是用户向其他人推荐产品的可能性,净推荐值(NPS)=(推荐者数/总样本数)×100%-(贬损者数/总样本数)×100%。

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

  • 产品使用效果,是产品承诺给用户的效果,在用户使用之后,是不是真的能达到,比如下面某APP商业产品,说开通会员更快找到另一半,用户是不是能够更快的找到另外一半,就是效果的体现。

商业产品效果

还有一个指标,能够很好的体现产品效果---复购。复购是指用户多次购买。如果用户不满意,那肯定不会多次购买(刚需品除外)。复购的维度比较多,比如金额、品类等,这里主要讨论周期。

如果我们能够计算出大部分用户的复购周期,那么,我们就能精细化运营。当到达一定的周期时,就可以通过发优惠券或是其他的运营方式触达用户。下面给大家分享一下怎么用sql计算用户的复购周期。

下表是不同用户在不同时间的下单情况。表名:order_user,字段名称:a.用户名称---customer_name,b.订单时间---order_date

表名

思路:

  1. 把订单时间往后位移一行。

  2. 用订单时间减去位移后的时间,就得到了周期。

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

第一步:位移

使用lag函数进行位移。lag(order_date,1)中两个参数,第一个参数是需要位移的字段,第二个字段是位移几行,在这里让订单时间往后位移一行得到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
计算周期

第三步:确定周期分布

最后以周期进行聚合,求次数,得到了不同周期的次数。注意:

  • 对周期进行排序,这样就能得到从小到大的顺序;

  • 排除null,位移以后第一订单时间,对应的位移值是null,需要排除。

select
    diff as '周期',
    count(*) as '次数'
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创建了一个临时表,表名就是order_user,大家可以在网上搜索一下,如果有疑问可以私信我。

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 '次数'
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:数有道
  • gongzhongh:数有道
  • gongzhongh:数有道

相关文章

  • 商业数据分析--使用SQL计算复购周期

    评价一个商业产品好不好,我们可以使用NPS、退款率、产品的使用效果等指标。 NPS是推荐值,是用户向其他人推荐产品...

  • oracle学习笔记8: 分析函数

    分析函数,也称为窗口函数,通常被认为仅对数据仓库SQL有用。使用分析函数的查询,基于对数据行的分组来计算总量值。与...

  • SQL基础

    SQL简介 SQL 是用于访问和处理数据库的标准的计算机语言。 使用 SQL 访问和处理数据系统中的数据,这类数据...

  • SQL练习2:消费者行为分析

    目录:一、将数据导入数据库二、SQL--用户消费行为分析1、统计不同月份的下单人数2、统计用户三月份的回购率和复购...

  • SQL简介

    SQL是用于访问和处理数据库的标准的计算机语言 使用SQL访问和处理数据系统中的数据,这类数据库包括:MySQl ...

  • 2020大厂数据分析师SQL笔试真题

    1. 提要 笔者作为一名互联网商业数据分析师,SQL是日常工作中最常用的数据提取&简单预处理语言。因为其使用的广泛...

  • Java必会技能之SQL篇

    SQL 是用于访问和处理数据库的标准的计算机语言,使用 SQL 访问和处理数据系统中的数据,这类数据库包括:Ora...

  • 《数据分析技术-使用SQL和EXCEL工具(第2版)(美)陶佰明

    《数据分析技术-使用SQL和EXCEL工具(第2版)(美)陶佰明译》高清中文版PDF免费下载 《数据分析技术-使用...

  • [SQL]spark sql 直接查询hive或impala中的

    SparkSQL结合SparkStreaming,使用SQL完成实时计算中的数据统计 – lxw的大数据田地htt...

  • [flow]Flume+SparkStreaming+Kafka

    SparkSQL结合SparkStreaming,使用SQL完成实时计算中的数据统计 – lxw的大数据田地htt...

网友评论

      本文标题:商业数据分析--使用SQL计算复购周期

      本文链接:https://www.haomeiwen.com/subject/qejvsrtx.html