【发布时间】:2013-09-28 06:42:40
【问题描述】:
搜索博客、问题和答案,似乎大部分都与我的问题相关,但从未真正回答我的问题。因此,感谢任何花时间提供帮助的人一百万!
我使用 SQL Server 管理工作室 2008 R2。
我想比较客户的“平均回购率”。复购率 (RPR) 计算为自他/她的第一个订单之日起的订单数。
样本表
- CustomerID / OrderDate / VKR_Number
- D10001 / 2013-01-04 / VKR-1
- D10001 / 2013-05-01 / VKR-2
- D10001 / 2013-05-11 / VKR-3
- D10001 / 2013-08-01 / VKR-4
定义: 累计数(回购): 自第一个订单以来的订单数量;这相当于订单总数减 1(即第一订单)
复购率(RPR):累计数(复购)/[时间间隔]
RPR 示例见上表: 客户 D10001 的累积 RPR 为
- 自他/她在 OrderDate = '2013-01-04' 首次购买后的 17 周内计数 (VKR) = 1
- 自他/她在 OrderDate = '2013-01-04' 首次购买后的 18 周内计数 (VKR) = 2
- 自他/她在 OrderDate = '2013-01-04' 首次购买后的 30 周内计数 (VKR) = 3
最简单的版本(至少对于 TSQL 外行来说)似乎是:
`Select CustomerID, COUNT([VKR_]) over (Partition by customer, DATEDIFF(week, Min([OrderDate ]), [OrderDate ])) as CountOfOrders, DATEDIFF(week, Min([OrderDate ]), [OrderDate ]) as WeeksPassedSinceDateOfFirstPurchase`
所需的结果表如下所示
- CustomerID/WeeksPassedSinceDateOfFirstPurchase/CountOfOrders
- D10001 / 17 / 1
- D10001 / 18 / 2
- D10001 / 30 / 3
如果上述要求在 TSQL 中太难实现,我也很乐意得到类似的结果表
- CustomerID/WeeksPassedSinceDateOfFirstPurchase/CountOfOrders
- D10001 / 1 / 0
- D10001 / 2 / 0
- D10001 / 3 / 0
- D10001 / 4 / 0
- D10001 / 5 / 0
- D10001 / 6 / 0
- 等
- D10001 / 17 / 1
- D10001 / 18 / 2
- D10001 / 19 / 2
- D10001 / 20 / 2
- D10001 / 21 / 2
- 等
- D10001 / 29 / 2
- D10001 / 30 / 3
再次,非常感谢您的任何建议!抱歉,如果我错过了任何博客/答案,这已经解决了我的问题。
【问题讨论】:
标签: sql sql-server count