Growth reports the share of each monthly signup cohort that came back and transacted in the following calendar month.
app_users holds signed_up_on; app_activity holds one row per active day. Using CTEs, return cohort_month, cohort_size, retained_users and retention_pct (retained ÷ cohort size × 100, rounded to 1 decimal).
Sample data
More CTEs questions
Practising alone only goes so far — our live cohorts pair SQL depth with dashboards, agentic analytics projects and mock interviews.
Explore the program