【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]

你可能感兴趣的:(【SQL Server 第7篇】 计算平均二次重购率)