SQL计算用户留存率问题
概念
电商业务中需要计算用户留存情况,在时间维度上可以分为用户次日、多日后的留存情况,用留存率表示。留存率计算方式如下:
次日留存率 = 当日新用户在次日登录的数量 / 当日新用户注册数量
三日留存率 = 当日新用户在第四天登录的数量 / 当日新用户注册数量
七日留存率 = 当日新用户在第八天登录的数量 / 当日新用户注册数量
其他时间的留存率计算同理。
情况一
假设现在有两张表,一张是注册信息表register_info,另一张是登录信息表login_info,两个表格数据如下。
现在分别计算出每日的新增用户数,以及次日、三日、七日留存率。
首先,将两张表做一个连接,用datediff函数选出用户注册后七日仍有登录的数据(条件1),连接条件是用户id相同(条件2)。查询代码如下:
查询结果如下:(这里每个用户的注册时间只有一个,所以会得出每个用户所有注册登录时间的排列组合便于后续计算)
之后利用case条件判断和count函数计算出各种留存率情况。代码如下:
得到结果如下:
情况二
假如现在只有一张用户登录信息表user_login_info,其中默认每个用户最早的登录时间就是注册时间,表格数据如下:
所以我们需要先用两个子查询得出类似(1)中的注册表t1和登录表t2,之后操作与(1)中相同,代码如下:
其中t3就是情况一中得到的t1.
查询结果如下:
您可能感兴趣的文章
- 02-26如何清晰地在Ubuntu中操作MySQL数据并删除相关容器?
- 02-26如何批量替换mysql数据库某个字段的值(mysql替换所有表中数据)
- 02-26MySQL删除数据表时,有哪些注意事项和具体步骤?
- 02-26如何在cmd中正确调用并运行mysql数据库命令行工具?
- 02-26MySQL如何具体操作才能授予其他数据库的用户权限?
- 02-26MySQL数据查询优化技巧,有哪些高效方法?
- 02-26如何配置MySQL数据库开机自动启动及关闭自启详细步骤揭秘?
- 02-26MySQL数据加密方式有哪些?如何高效实现数据库加密?
- 02-26如何详细查询MySQL数据库的实时连接状态及连接数信息?
- 02-26如何使用MySQL语句将数据插入到表的首部?
阅读排行
推荐教程
- 09-14为什么说MySQL是互联网时代的“数据基石”?
- 09-14MySQL的安全性真的足以保护你的关键数据吗?
- 09-22SQLServer数据库游标的具体使用
- 02-01MySQL数据库导入全攻略,如何高效安全地导入数据?
- 09-14为什么开源数据库MySQL能持续领先数十年?
- 09-22SQL计算用户留存率问题
- 09-22SQL查询用户连续N天登录
- 09-14为什么学习MySQL成为了IT入门的必选项?
- 09-14MySQL数据库为何能成为全球开发者的首选?
- 09-14MySQL在大数据和AI时代是否仍具竞争力?






