【SQL Server 第7篇】 计算平均二次重购率

从用户消费订单表(用户编号、订单编号、用户姓名、创建订单时间、购买时间等),查询近一年每月用户的平均消费时长。
为了方便理解,将安装如下步骤讲解:

  • 第一步 我们先创建需要的数据表
    use [3.9]
    create table [消费订单表](
    用户编号 int,
    购买时间 date)
    insert into [消费订单表] values
    ('1','20160602'),
    ('1','20160607'),
    ('2','20160602'),
    ('2','20160605'),
    ('2','20160612'),
    ('3','20160605'),
    ('3','20160608'),
    ('4','20160609'),
    ('4','20160612')
    drop table [消费订单表]
    select * from [消费订单表]

  • 第二步 实现Row Number OVER Partition或者是说Rank OVER Partition的方法

     SELECT * ,Row_Number() OVER (partition by 用户编号 ORDER BY 购买时间 asc) rank INTO [temp_11]
     from [消费订单表] 
     select * from [temp_11]
    
     select *,rank-1 rank_1 INTO [temp_12] from 
     (SELECT * ,Row_Number() OVER (partition by 用户编号 ORDER BY 购买时间 Asc) rank from [消费订单表])a
     select * from [temp_12]
    
  • 第三步 查询下次购买时间
    select [temp_11].用户编号,[temp_11].购买时间,[temp_12].购买时间 下次购买时间 INTO [temp_13]
    from [temp_11]
    left join [temp_12]
    on [temp_12].rank_1=[temp_11].rank
    and [temp_12].用户编号=[temp_11].用户编号
    where [temp_12].购买时间 is not null
    select * from [temp_13]

  • 第四步 计算二次购买间隔时间
    select AVG(DATEDIFF(day,购买时间,下次购买时间)) from [temp_13]

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容