我们如何计算每天最近三天订购的唯一用户ID?

时间:2020-05-11 10:36:27

标签: sql-server tsql

我有如下表的数据:

enter image description here

我需要在每天的最近3天中对唯一的UserID进行计数,如下所示:

enter image description here

  • 例如,在5/5/2020中,我需要计算在5/3/2020和5/4/2020和5/5/2020中订购的唯一用户ID。所以我们有12个唯一的用户ID。

  • 在5/4/2020中,我需要计算在5/2/2020和5/3/2020和5/4/2020中订购的唯一用户ID。所以我们有11个唯一的用户ID。

1 个答案:

答案 0 :(得分:4)

不幸的是,SQL Server不支持count(distinct)作为窗口函数。一种方法使用apply

select d.orderdate, o2.num_users_3
from (select distinct o.orderdate from orders o) d cross apply
     (select count(distinct o2.userId) as num_users_3
      from orders o2
      where o2.orderdate <= d.orderdate and
            o2.orderdate > dateadd(day, -4, d.orderdate)
     ) o2;