今天要查询1个月内,累计到每一号的去重用户。
想要达到的效果如图所示,但在网上搜索了好久,也没有个说清楚的。所以我写一个抛砖引玉。
select
cwc.data_date,
count(distinct cwc.user_id),
sum(count(distinct cwc.user_id)) over(order by cwc.data_date) from (
select user_id,min(data_date) as data_date from dws_users
where 1=1
#这里是限定时间,根据你的需要
data_date between '2020-06-01' and '2020-06-30'
#--这里我是根据我的需要,我只看行为大于0 的
and activity_num> 0
GROUP BY 1
)cwc GROUP BY 1
最终得出结果:
原理为:取出去重用户行为的最小时间,然后再累加。这样实现了累计去重的效果。