Real-world recipes · Product analytics
Weekly and monthly active users (WAU, MAU)
Active user means someone who did something meaningful in the period. Here, anyone with a login event. The trick is counting each person once per week, however many times they logged in. That is COUNT(DISTINCT customer_id).
To group by week, we turn every date into the Monday that starts its week.
Try itEdit the query, then Run
| week_starting | weekly_active_users |
|---|---|
| 2026-01-05 | 10 |
| 2026-01-12 | 16 |
| 2026-01-19 | 24 |
| 2026-01-26 | 33 |
| 2026-02-02 | 36 |
| 2026-02-09 | 40 |
| 2026-02-16 | 47 |
| 2026-02-23 | 58 |
| 2026-03-02 | 60 |
| 2026-03-09 | 77 |
Showing 10 of 26 rows. Press Run to see them all.
For MAU, swap the week for the month: strftime('%Y-%m', event_date). Dividing average daily actives by MAU gives "stickiness", a common product health number.
Your turn
Monthly active users: count distinct customers with a login each month. Columns month and mau, in order.
Same as the example, but GROUP BY strftime('%Y-%m', event_date).
This page on one card
