【SQL Server 第7篇】 計算平均二次重購率

weixin_34007291發表於2016-08-03

從使用者消費訂單表(使用者編號、訂單編號、使用者姓名、建立訂單時間、購買時間等),查詢近一年每月使用者的平均消費時長。
為了方便理解,將安裝如下步驟講解:

  • 第一步 我們先建立需要的資料表
    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]

相關文章