我有一個用戶活動表。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秒)幸運的是,這是爲了報告的目的,所以沒關係。謝謝。 –