我有一个数据库,其中包含用户执行的每个操作的时间戳,如下所示:
user_idactioncreation_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)

09-16 03:01