我试图找出我的用户的一些滑动窗口统计信息。我有一个包含用户的表,以及 created_at 和 verify_at 等列。对于每个月,我想知道有多少用户注册(按 created_at 的 date_trunc 进行简单分组),然后在这些人中,有多少人在我的滑动窗口内进行了验证(称之为 60 天)。
我想做一个 SQL 查询,它给了我类似的东西:
Month | Registered | Verified in 60 days
Jan 2009 | 1543 | 107
Feb 2009 | 2000 | 250
我正在使用postgresql。我开始查看 sum(case...),但我不知道我是否可以让我的案例以某种方式依赖于 date_trunc。
当然,这是行不通的,但想法是这样的:
SELECT DATE_TRUNC('month', created_at) as month,
COUNT(*) as registered,
SUM(CASE WHEN verified_at < month+60 THEN 1 ELSE 0 END) as verified
FROM users
GROUP BY DATE_TRUNC('month', created_at)