如何用单条SQL统计各版本发布周内的活跃用户数
解决方案:统计版本发布后一周内的活跃用户数
嘿,这是能直接满足你需求的单条SQL查询,我会一步步给你拆解逻辑:
SELECT rd.version, rd.release_date, rd.post_release_week_date, COUNT(DISTINCT au.user_id) AS active_user_count FROM release_dates rd LEFT JOIN active_users au ON au.version = rd.version AND au.active_date BETWEEN rd.release_date AND rd.post_release_week_date GROUP BY rd.version, rd.release_date, rd.post_release_week_date;
关键逻辑说明:
- LEFT JOIN 确保完整性:用LEFT JOIN关联两张表,这样
release_dates里的每一行都会保留在结果中——哪怕某个版本在发布后一周内没有任何活跃用户,对应的active_user_count会显示0,不会漏掉任何版本记录。 - 精准匹配版本与时间区间:JOIN条件里同时指定了版本匹配,以及活跃日期落在发布日期到发布后一周的区间内,这样只会关联到对应版本、对应时间段的活跃用户数据。
- 去重统计唯一用户:用
COUNT(DISTINCT au.user_id)而不是简单的COUNT(au.user_id),是为了避免同一个用户在这段时间内多次活跃被重复统计,确保统计的是唯一活跃用户的数量。
如果你的post_release_week_date字段是发布日期加7天的日期值(比如release_date是2024-01-01,post_release_week_date是2024-01-08),那BETWEEN会包含这两个端点的日期,完全符合“发布日期至发布后一周内”的统计需求。
内容的提问来源于stack exchange,提问作者joeschmidt45
相关产品推荐
相关产品推荐

