搜索博客,问题和答案,似乎大多数都与我的问题有关,但从未真正回答过我的问题。因此,感谢任何花时间提供帮助的人一百万!
我使用 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
- ETC
- D10001 / 17 / 1
- D10001 / 18 / 2
- D10001 / 19 / 2
- D10001 / 20 / 2
- D10001 / 21 / 2
- ETC
- D10001 / 29 / 2
- D10001 / 30 / 3
再次,非常感谢您的任何建议!道歉,如果我错过了任何博客/答案,那已经解决了我的问题。