0

Day 0 から Day 7 (またはその他の特定の将来の日付) にログインしたユニーク ユーザーの数を調べるときに機能する保持クエリを作成しました。

ただし、問題は、0 日目から 1 日目から 7 日目 (またはその他の将来の日付範囲) にログインしたユーザーの数を確認しようとしていることです。

実行される現在のクエリは次のとおりですが、結果は生成されません。

select FirstTime, count(distinct(newusers)) as NewUsers, FutureDate
  , count(distinct(retaineduser)) as RetainedUser
from
(
  select nu.UserID as newusers, firsttime, l.UserID as retaineduser, l.LoginDate as FutureDate
  from ##newusers nu
  left join ##logins l on nu.UserID = l.UserID
  and FirstTime between dateadd(dd, -1, l.logindate) and dateadd(dd, -7, l.logindate)
  group by nu.UserID, FirstTime, l.UserID, l.logindate
) as x
group by FirstTime, futuredate
HAVING count(retaineduser) > 0

なぜこれが機能しないのか、頭を悩ませているようには見えません。JOINS で BETWEEN 条件を使用することは悪い習慣と見なされていますか? これは SQL Server 上にあります。

サンプル データと目的の結果。

newusers テーブル:

NewUser - FirstTime
A - 2/1/2019
B - 2/1/2019
C - 2/1/2019
D - 2/2/2019

ログイン表:

RetainedUser - LoginDate
A - 2/1/2019
A - 2/3/2019
A - 2/4/2019
B - 2/1/2019
B - 2/6/2019
C - 2/1/2019
C - 2/10/2019
D - 2/2/2019
D - 2/3/2019

望ましい結果:

FirstTime - NewUsers - FutureDate - RetainedUser
2/1/2019 - 3 - 2/8/2019 - 2
2/2/2019 - 1 - 2/9/2019 - 1

したがって、望ましい結果には、最初の日付と、その時点でログインした新規ユーザーの数が含まれます。1 日目から 7 日目までにログインしたユーザー数とともに、7 日先の将来の日付も表示されます。

4

1 に答える 1