【发布时间】:2021-02-22 12:31:31
【问题描述】:
在 PostgreSQL 中,我有一个记录所有用户活动的表,其中包含一个帐户 ID 和一个时间戳字段:
SELECT account_id, created FROM activity_log;
一个account_id 一天可以出现多次,或者根本不出现。
我想要一张显示每天“活跃用户”数量的图表,其中“活跃用户” 表示“在过去 X 天内进行过任何活动的用户”。
如果 X 为 1,那么我们可以将时间戳截断为 'day' 并聚合:
SELECT date_trunc('day', created) AS date, count(DISTINCT account_id)
FROM activity_log
GROUP BY date_trunc('day', created) ORDER BY date;
如果 X 正好是 7,那么我们可以截断为 'week' 并聚合 - 尽管这给出了 我一周只需要一个数据点,而我实际上每天需要一个数据点。
但我需要解决不同 X 的一般情况,并为每一天提供一个不同的数据点。
【问题讨论】:
标签: sql postgresql