ブログ、質問と回答を検索すると、それらのほとんどは私の問題に関連しているように見えますが、私の質問に実際に答えることはありません. したがって、時間をかけて助けてくれた人に感謝します!
私は 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 は
- カウント (VKR) = OrderDate = '2013-01-04' の最初の購入から 17 週間で 1
- カウント (VKR) = 2 (注文日 = '2013-01-04' の最初の購入から 18 週間)
- カウント (VKR) = 3 OrderDate = '2013-01-04' の最初の購入から 30 週間
最も単純なバージョン (少なくとも 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
繰り返しますが、アドバイスをどうもありがとうございました! そして、ブログや回答を見逃していた場合は、すでに問題を解決していたことをお詫びします。