我有一个用户活动表。MySql组和按年份计数
created_at account_id
2017-01-01 1221
2017-01-01 21458
2017-01-03 1221
2017-01-04 1221
2017-01-04 4555
....
现在我可以得到使用此查询在某个星期内处于活动状态的唯一用户数(account_id)。
SELECT YEARWEEK(created_at) as yearweek, COUNT(DISTINCT account_id) as count
FROM activities
GROUP BY YEARWEEK(created_at)
这将返回
|yearweek|count|
================
| 201701 | 221 |
| 201702 | 253 |
| 201703 | 282 |
| 201704 | 252 |
| 201705 | 247 |
| 201706 | 135 |
什么其实我是想明白的是,某一周或前3周内均活跃用户数。
换句话说,如果用户上周,或2周前或3周前活跃,他也应该计算在本周。 (共4周)显然,用户也应该计入他以前活跃在其中的每个星期。
是否有可能通过MySql实现此目的?如果是这样,怎么样?
我能够使用这种即使在我的2万行数据集中蔓延超过2个表,它有点慢。 (约7秒)幸运的是,这是为了报告的目的,所以没关系。谢谢。 –