搜索博客,问题和答案时,似乎大部分内容与我的问题只是相关,但我从未真正回答过我的问题。因此,感谢花费数百万的时间来帮助!
我使用SQL Server管理工作室2008 R2。
我想比较一下客户的“平均回购率”。回购率(RPR)计算为自其首次订单日期起的订单数量。
样本表
解释: 累计计数(重购): 自第一个订单以来的订单数量;这相当于订单总数减1(即第一顺序)
回购率(RPR):累积计数(重新购买)/ [时间间隔]
RPR在上表中举例说明: 客户D10001的累计RPR为
最简单的版本(至少对于TSQL外行人)似乎是:
`Select CustomerID, COUNT([VKR_]) over (Partition by customer, DATEDIFF(week, Min([OrderDate ]), [OrderDate ])) as CountOfOrders, DATEDIFF(week, Min([OrderDate ]), [OrderDate ]) as WeeksPassedSinceDateOfFirstPurchase`
期望的结果表看起来像
如果上述请求在TSQL中难以实现,我也很乐意得到像
这样的结果表再次,非常感谢您的任何建议!并且道歉,如果我错过任何博客/答案,已经解决了我的问题。
答案 0 :(得分:0)
这应该有用。
SELECT CustID
,DATEDIFF(ww,OrderDate,GETDATE()) 'WEEKS'
,(SELECT COUNT(1)
from Table t2
where t1.custID=t2.custID
and t2.OrderDate<=t1.OrderDate
GROUP BY t2.CustID)-1 as CountOrders
FROM TABLE t1
GROUP BY CustID,OrderDate
ORDER BY OrderDate
从问题来看,它看起来不像你想要一个平均数,只是一个数-1,如果不是这样,那么请澄清。这应该为您提供您要求的结果表。您可能希望将我的第二列和第三列合并为每周的平均订单,如果这是你得到的。