我有一个数据库,其中包含我的用户完成的每个操作,并带有时间戳,如下所示:
用户名
; Action
; 创建日期
我想评估一段时间内活跃用户的数量。我可以看到每周活跃的用户数 (count (distinct user_id)),但我想知道从年初到每周活跃的用户数,如下所示:
-第1周活跃用户数
- 第 1 周或第 2 周的活跃用户数
-第 1 周、第 2 周或第 3 周的活跃用户数
vân vân.
我不能每周都添加活跃用户,因为他们回来了,所以如果我做了一些就会被加倍。
现在我可以每周用这个查询做一次:
SELECT count(distinct uca.user_id)
FROM DATABASE
WHERE (extract(week from uca.creation_date)) <= 9
我怎样才能有一个查询每周都给我这个?
(抱歉,这太长了,我意识到我想更清楚一点)
Cảm ơn!
您可以使用子查询。您的示例查询有点困惑(表别名 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)
Tôi là một lập trình viên xuất sắc, rất giỏi!