SQL Quest › SQL Interview Questions › Aggregation & Grouping
Monthly Active Users
MAU is the number every fintech dashboard opens with, and the first question candidates report from the live round. Define an active user as one with at least one completed transaction in the calendar month. Bucket ts into months with strftime('%Y-%m', ts) and count each user once per month, however many transactions they made.
Return month (YYYY-MM) and active_users. One row per month with any completed transaction. Order by month ascending.
Solve it in the browser editor →
Runs on SQLite in your browser, graded against the expected result, no signup. A wrong answer gets a diagnosis, not just "incorrect".
Schema
transactions
| txn_id | user_id | ts | type | amount | currency | amount_gbp | fee_gbp | merchant_category | merchant_country | counterparty_user_id | status | decline_reason |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 1 | 2025-06-14 11:01:51 | fx_exchange | 32271.15 | JPY | 167.81 | 1.68 | NULL | NULL | NULL | completed | NULL |
| 2 | 1 | 2025-06-14 11:17:45 | bill_payment | 59.53 | EUR | 50.6 | 0 | utilities | IE | NULL | completed | NULL |
| 3 | 7 | 2025-06-16 10:06:38 | card_payment | 122.27 | EUR | 103.93 | 0 | shopping | ES | NULL | completed | NULL |
Expected output: month=2025-06, active_users=10; month=2025-07, active_users=13 ...
Hint
Concepts
SELECT GROUP BY COUNT DISTINCT strftime Date Functions + Aggregation
Practise the topic: SQL practice questions · GROUP BY exercises
In these company practice sets
A SQL Quest challenge matched to patterns reported for these companies — not a question any of them has published.
Related questions
Where would this cost you points in an interview?
Ten questions, no signup: a Skillmap across nine SQL skills and the one to fix first.
Take the readiness test