社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  DATABASE

复购率指标解读及mysql实现

CDA数据分析师 • 1 年前 • 500 次点击  

留存率是指在一定时间内,用户或客户继续使用产品或服务的比例。它是衡量用户忠诚度和产品或服务质量的重要指标之一。

留存率可以分为不同类型,如日留存率、周留存率、月留存率等,具体取决于所关注的时间段。通常情况下,留存率会随着时间的推移而逐渐下降,因为部分用户或客户可能会流失或停止使用产品或服务。
留存率的计算公式如下:
留存率 = (当前时间段内继续使用产品或服务的用户数 / 上一个时间段的用户总数) × 100%
留存率的高低可以反映产品或服务的吸引力和用户满意度。较高的留存率意味着用户对产品或服务的黏性较强,对企业而言,可以带来更稳定的收入和更高的用户生命周期价值。
通过监测和分析留存率,企业可以了解用户的使用习惯、需求和偏好,进而优化产品或服务,提升用户体验,增加用户黏性,减少用户流失,促进业务的可持续发展。
--查询数据新增/次日/七日/三十日留存情况,以下为示例代码:
select firstday,
sum(if(diff=0,1,0)) as 新增,
sum(if(diff=1,1,0)) as 次日留存,
sum(if(diff=6,1,0)) as 7日留存,
sum(if(diff=29,1,0)) as 30日留存,
sum(if(diff=1,1,0))/sum(if(diff=0,1,0)) as 次日留存率,
sum(if(diff=6,1,0))/sum(if(diff=0,1,0)) as 7日留存率,
sum(if(diff=29,1,0))/sum(if(diff=0,1,0)) as 30日留存率
from( select user_id, 日期, min(日期)over(partition by user_id order by 日期) as firstday,
datediff(日期, min(日期)over(partition by user_id order by 日期)) as diff
from try123
group by user_id, 日期
) as T
group by firstday
order by firstday;
解读如下:
  • 首先,使用子查询将原始数据表(假设为try123)按照用户ID和日期进行分组,并计算每个用户的第一天日期(firstday)和日期差(diff);
  • 接下来,外部查询根据firstday进行分组,并使用聚合函数sum和条件判断函数if来计算新增、次日、七日和三十日留存的数量。其中,if(diff=0,1,0)表示如果diff等于0,则返回1,否则返回0;
  • 最后,通过除法运算计算次日、七日和三十日留存率,即对应留存数量除以新增数量;
  • 最终的查询结果按照firstday进行排序,并显示新增、次日、七日和三十日留存的数量以及对应的留存率。


了解更多数据分析知识、与更多优秀的人一起进群交流请扫码



群码过期或者群满请添加客服微信 CDAshujufenxi 后拉您进群

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/161671
 
500 次点击