Weekly Signup Cohort Retention

Group users into weekly cohorts by signup week (weeks start Monday). For signups up to 2026-03-31, report the share of each cohort who logged in during week 1 (days 7-13 after signup) and during week 4 (days 28-34 after signup). Day 0 is the signup date.

Expected output

cohort_week (Monday, YYYY-MM-DD), users, week1_pct, week4_pct (rounded to 1 decimal). Sorted by cohort_week.

Row order is checked. Column names are not checked; numbers are compared to 2 decimals.

Dataset: B2B SaaS product events

A project-management SaaS: company accounts, their users, product event logs (Jan to Apr 2026) and subscription history.

accounts

One row per customer company.

account_idINTEGERprimary key
companyTEXT
industryTEXT
countryTEXT
created_atTEXTYYYY-MM-DD
users

One row per user. Every user belongs to one account.

user_idINTEGERprimary key
account_idINTEGER
signup_dateTEXTYYYY-MM-DD, same day as the user's signup event
acquisition_channelTEXTorganic, paid_search, referral or partner
countryTEXT
events

Product event log. Data ends on 2026-04-30.

event_idINTEGERprimary key, increases with event_time
user_idINTEGER
event_nameTEXTsignup, login, view_dashboard, export_report, create_project, invite_teammate, upgrade_click
event_timeTEXTYYYY-MM-DD HH:MM:SS (UTC)
subscriptions

Paid subscription periods per account. An account with no rows is on the free plan.

subscription_idINTEGERprimary key
account_idINTEGER
planTEXTteam or business
mrrREALmonthly recurring revenue in USD
started_atTEXTYYYY-MM-DD, inclusive
ended_atTEXTYYYY-MM-DD, exclusive; NULL while active. May be in the future for a scheduled cancellation.

Engine: SQLite. Dates are text (YYYY-MM-DD); use strftime(), date() and julianday() for date math.

Related problems

SQLite · runs in your browser
Ctrl/⌘ + Enter to run
Expected output preview (12 rows, order matters)
cohort_weekusersweek1_pctweek4_pct
2026-01-051258.316.7
2026-01-121266.758.3
2026-01-19933.366.7

Showing 3 of 12 rows.

Hints

Worked solution

Run at least one query to unlock it.