SQL interview question: Cohort Retention Analysis

Monthly Signup Cohort Retention

Growth team needs a cohort analysis: group customers by signup month, then track what % placed an order in subsequent months.

Return signup_cohort (YYYY-MM), months_since_signup (whole 30-day blocks since the first day of the signup month: 0, 1, 2...), and active_pct (% of cohort active that month, rounded to 1 decimal).

Skills: advanced date arithmetic with cohort tracking

Tables

customers 12 rows
  • customer_id integer PK
  • name text
  • email text
  • city text
  • signup_date text
customer_idnameemailcitysignup_date
101Alice Mitchell[email protected]San Francisco2024-01-15
102Bob Chen[email protected]New York2024-02-20
103Carol Davis[email protected]Los Angeles2024-03-10
orders 15 rows
  • order_id integer PK
  • customer_id integer → customers
  • order_date text
  • total_amount real
  • status text
order_idcustomer_idorder_datetotal_amountstatus
11012024-01-20249.99delivered
21012024-03-151999.99delivered
41012024-09-0579.99delivered

Keep going