SQL 计算留存率以7日内留存率为例

本文通过SQL代码示例,详细梳理了如何计算7日留存率,核心思路是将目标日期中的初始日用户数除以初始日的总用户数。以Table表中的user_id和log_date字段为基础进行分析。
摘要由CSDN通过智能技术生成

SQL 计算留存率

留存率=目标日中初始日的用户数/初始日的用户数

现已计算7日留存率为例进行SQL代码逻辑梳理:
表名:Table
字段:
user_id
log_date as date

select t1.date,t2.gap,t2.retention_num,t2.retention_num/t1.dat0_Dau
as retention_ration from
#建立初始日活跃用户数量 的 虚表
(select date,
  • 0
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
假设有一个用户行为表 user_behavior,包含以下字段: - user_id:用户ID - behavior_time:行为发生时间 可以使用以下SQL语句计算2日、3日、7日、15日、30日留存率: ``` -- 2日留存率 SELECT COUNT(DISTINCT b1.user_id) / COUNT(DISTINCT b2.user_id) AS `2_day_retention_rate` FROM user_behavior b1 JOIN user_behavior b2 ON b1.user_id = b2.user_id AND DATEDIFF(b1.behavior_time, b2.behavior_time) = 2 WHERE b1.behavior_time >= '2022-01-01' AND b1.behavior_time < '2022-02-01' AND b2.behavior_time >= '2022-01-01' AND b2.behavior_time < '2022-02-01'; -- 3日留存率 SELECT COUNT(DISTINCT b1.user_id) / COUNT(DISTINCT b2.user_id) AS `3_day_retention_rate` FROM user_behavior b1 JOIN user_behavior b2 ON b1.user_id = b2.user_id AND DATEDIFF(b1.behavior_time, b2.behavior_time) = 3 WHERE b1.behavior_time >= '2022-01-01' AND b1.behavior_time < '2022-02-01' AND b2.behavior_time >= '2022-01-01' AND b2.behavior_time < '2022-02-01'; -- 7日留存率 SELECT COUNT(DISTINCT b1.user_id) / COUNT(DISTINCT b2.user_id) AS `7_day_retention_rate` FROM user_behavior b1 JOIN user_behavior b2 ON b1.user_id = b2.user_id AND DATEDIFF(b1.behavior_time, b2.behavior_time) = 7 WHERE b1.behavior_time >= '2022-01-01' AND b1.behavior_time < '2022-02-01' AND b2.behavior_time >= '2022-01-01' AND b2.behavior_time < '2022-02-01'; -- 15日留存率 SELECT COUNT(DISTINCT b1.user_id) / COUNT(DISTINCT b2.user_id) AS `15_day_retention_rate` FROM user_behavior b1 JOIN user_behavior b2 ON b1.user_id = b2.user_id AND DATEDIFF(b1.behavior_time, b2.behavior_time) = 15 WHERE b1.behavior_time >= '2022-01-01' AND b1.behavior_time < '2022-02-01' AND b2.behavior_time >= '2022-01-01' AND b2.behavior_time < '2022-02-01'; -- 30日留存率 SELECT COUNT(DISTINCT b1.user_id) / COUNT(DISTINCT b2.user_id) AS `30_day_retention_rate` FROM user_behavior b1 JOIN user_behavior b2 ON b1.user_id = b2.user_id AND DATEDIFF(b1.behavior_time, b2.behavior_time) = 30 WHERE b1.behavior_time >= '2022-01-01' AND b1.behavior_time < '2022-02-01' AND b2.behavior_time >= '2022-01-01' AND b2.behavior_time < '2022-02-01'; ``` 其中,日期范围可以根据实际情况进行修改。这些SQL语句可以分别计算出2日、3日、7日、15日、30日留存率
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值