当前位置: 首页 > news >正文

sql练习:计算用户的平均次日留存率

记录一下今天遇见的一道sql题

要求结果:

首先得知道平均次日留存率的计算公式

p=(这段时间内所有用户连续两天登录的次数)/(这段时间内所有用户登录的总次数)

求这段时间内所有用户登录的日期为表a

select distinct device_id,date from question_practice_detail

将用户登录过的日期全部减一天得到表b

select distinct device_id,date_sub(date,interval 1 day) as datefrom question_practice_detail

a表和b表进行左外连接,求某个用户前一天是否登录

select * from 
(select distinct device_id,date from question_practice_detail ) a
left join 
(select distinct device_id,date_sub(date,interval 1 day) as datefrom question_practice_detail
) b
on a.device_id = b.device_id and a.date = b.date

求用户连续两天都登录的次数 

select a.device_id , if(b.device_id is not null,1,0) temp
from
(select distinct device_id,date from question_practice_detail ) a
left join 
(select distinct device_id,date_sub(date,interval 1 day) as datefrom question_practice_detail
) b
on a.device_id = b.device_id and a.date = b.date

求平均次日留存率

select avg (if(b.device_id is not null,1,0)) as avg_ret
from
(select distinct device_id,date from question_practice_detail ) a
left join 
(select distinct device_id,date_sub(date,interval 1 day) as datefrom question_practice_detail
) b
on a.device_id = b.device_id and a.date = b.date


http://www.mrgr.cn/news/24477.html

相关文章:

  • shell脚本、循环、函数
  • OPENAIGC开发者大赛高校组金奖 | 知洞—基于大模型的智慧题库
  • Pycharm配置ssh远程服务器解析器
  • consul配置ACL安全认证
  • windows下自启springboot项目(jar+nginx)
  • 【Lua学习】Lua最最基础的
  • C语言的数据在内存中的存储
  • 【QT】实现TCP服务器,客户端之间的通信
  • 基于监测成果的黄金坪水电站高边坡支护方案-峟思
  • @ConditionalOnBean主键的坑
  • [OpenCV] 数字图像处理 C++ 学习——14霍夫变换直线、圆检测 附完整代码
  • 校园管理|基于springboot+vue的校园管理系统(源码+数据库+文档)
  • python之pyecharts制作可视化数据大屏
  • 牛客周赛 Round 32
  • 前后端跨域问题
  • GD32F4开发 -- FATFS文件系统
  • 各环境缩写含义介绍【pro、sit、uat、test、pre、dev、fat、Staging】
  • 导入neo4j数据CSV文件及csv整理demo示例
  • 探究文本完全对齐技术:从理论到代码
  • 灵魂绑定Tokens介绍和在Sui上的案例