我有如下表的数据:
我需要在每天的最近3天中对唯一的UserID进行计数,如下所示:
例如,在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。
答案 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;