SQL: 连续活跃用户

例如统计最近 1 月 连续 4 周活跃用户,逻辑为先统计访问的时间为一年中的第几个星期,接着统计次数是否大于等于 4 即可。

SELECT user, COUNT(DISTINCT(weekofyear(login_date))) AS active_week_num
FROM table_a
WHERE login_date>='2020-03-06'
GROUP BY user
HAVING active_week_num >= 4
1
2
3
4
5

如果想计算连续日活跃用户,把 weekofyear() 换成 dayofyear() 即可。

reference