我有一个数据库,其中包含用户执行的每个操作的时间戳,如下所示:user_id
;action
;creation_date
我想评估一段时间内活跃用户的数量。
我可以看到每周活动的用户数(count(distinct user_id)),但我想知道从年初到每周活动的用户数,如下所示:
-每周活动用户数1
-第1周或第2周的活动用户数
-活动周1、周2或周3的用户数
等
我不能每周都添加活跃用户,因为他们会回来,所以如果我做了一些会被加倍计算。
现在,我每周都可以使用以下查询:
SELECT count(distinct uca.user_id)
FROM DATABASE
WHERE (extract(week from uca.creation_date)) <= 9
我怎么能有一个单一的查询,给我这个为每个星期?
(抱歉,时间太长了,我意识到我想说清楚)
谢谢您!
最佳答案
可以使用子查询您的示例查询有点混乱(表别名uca
未定义,您只提取周而不是年)。我想你想要这样的东西:
SELECT year(uca.creation_date), week(uca.creation_date),
count(distinct uca.user_id) as WEEK_users,
(select count(distinct uca2.user_id)
from database uca2
where year(uca2.creation_date) = year(uca.creation_date) and
week(uca2.creation_date) <= week(uca.creation_date)
) as YTD_users
FROM DATABASE uca
GROUP BY year(uca.creation_date), week(uca.creation_date)