私はこれを序文にしておきますが、最初にこの質問をどのようにして答えを見つけることに大きな妨げになっているのか正確にはわかりません。その結果、私は完全に間違った用語を使用している可能性があります。TSQLのローリングカウント
ウィンドウを使用してある期間にわたって別個のユーザーの数を取得したいと考えています。
私のデータテーブルには、Id、User、RequestedOn、システムによって時間とともにキャプチャされるクエリの列があります。例えば、8時間の間に、システムは78人の異なるユーザーによって異なる回数370回照会される。
私はこれをブルートフォースで行い、無視する方法を考えましたが(BF & I)、多くのBF &のように、Beanの規模を拡大することはできません。
これらの例では、カウントするウィンドウサイズは8時間です。所与の8時間のタイムスロットに対する別個のユーザの数。
Select '5/28/17 15:00' [StartingFrom], Count(Distinct [UserName]) [Users] From [vwRequests] Where [RequestedOn] >= '5/28/17 15:00' And [RequestedOn] <= '5/28/17 23:00' Union
Select '5/28/17 14:00' [StartingFrom], Count(Distinct [UserName]) [Users] From [vwRequests] Where [RequestedOn] >= '5/28/17 14:00' And [RequestedOn] <= '5/28/17 22:00' Union
Select '5/28/17 13:00' [StartingFrom], Count(Distinct [UserName]) [Users] From [vwRequests] Where [RequestedOn] >= '5/28/17 13:00' And [RequestedOn] <= '5/28/17 21:00' Union
Select '5/28/17 12:00' [StartingFrom], Count(Distinct [UserName]) [Users] From [vwRequests] Where [RequestedOn] >= '5/28/17 12:00' And [RequestedOn] <= '5/28/17 20:00' Union
Select '5/28/17 11:00' [StartingFrom], Count(Distinct [UserName]) [Users] From [vwRequests] Where [RequestedOn] >= '5/28/17 11:00' And [RequestedOn] <= '5/28/17 19:00' Union
Select '5/28/17 10:00' [StartingFrom], Count(Distinct [UserName]) [Users] From [vwRequests] Where [RequestedOn] >= '5/28/17 10:00' And [RequestedOn] <= '5/28/17 18:00' Union
Select '5/28/17 09:00' [StartingFrom], Count(Distinct [UserName]) [Users] From [vwRequests] Where [RequestedOn] >= '5/28/17 09:00' And [RequestedOn] <= '5/28/17 17:00' Union
Select '5/28/17 08:00' [StartingFrom], Count(Distinct [UserName]) [Users] From [vwRequests] Where [RequestedOn] >= '5/28/17 08:00' And [RequestedOn] <= '5/28/17 16:00'
私はこれを行うより良い方法があると思いますが、どこから見てもわからないと思います。
ポインタが素晴らしいです!
はあなたには、いくつかのサンプルデータと予想される出力を提供することができます:あなたはあなたのクエリを書き換えたい場合は
、あなたはこのような何かを行うことによって開始することができますか? – tarheel