SQL:D7 Retention
给定 users(user_id, signup_date) 和 events(user_id, event_time, event_type),计算每天注册用户的 D1 / D7 retention。需要处理重复事件、时区和当天注册当天活跃。
参考思路
- 先定义 cohort:按 signup_date 还是用户所在时区的 local date。
- 先把 events 去重到 user_id + active_date 粒度,再和 users 做 join。
- 用 conditional aggregation 计算 D1 / D7 分子,cohort size 做分母。
- 说明 late event 到达后是否重算历史 cohort,以及 dashboard 如何标记数据未完成。
面试官主要看:业务口径、去重、时间窗口、NULL 和 late event,而不只是 SQL 语法。
