统计每个日期新用户的次日留存率

#明确问题:12号的新用户次留是指在12号是第一次登录,并且在13号也登录了。

#分母:当前日期新用户的特征是 当前日期=该用户所有登录日期的最小值

#分子:当前日期作为前一天有该用户的登录记录 并且是第一次登录。(12号作为前一天有这个人,说明13号有这个人)

【易错点】因为分母有可能为0,所以用ifnull(不为null时返回的值,为null时返回的值),这里指定为null时返回0

前一天有该用户的登录记录:

case when (user_id,date)in(select user_id,date(date,'-1 day') from login

第一次登录

(user_id,date)in (select user_id,min(date)from login group by user_id)

#牛客参考代码

select date,ifnull(round((sum(case when (user_id,date)in(select user_id,date_add(date,interval -1 day) from login)  and (user_id,date)in (select user_id,min(date)from login group by user_id)then 1 else 0 end))/(sum(case when (user_id,date)in(select user_id,min(date)from login group by user_id)then 1 else 0 end)),3),0)as p
from login
group by date
order by date;

#自己修改后的代码

select date,ifnull(round((sum(case when (user_id,date)in(select user_id,date(date,'-1 day') from login)  and (user_id,date)in (select user_id,min(date)from login group by user_id)then 1 else 0 end))*1.0/(sum(case when (user_id,date)in(select user_id,min(date)from login group by user_id)then 1 else 0 end)),3),0.000)as p
from login
group by date
order by date;

题目:

描述:

请你统计一下每个日期新用户的次日留存率。
有一个登录(login)记录表,简况如下:

请你写出一个sql语句查询每个日期新用户的次日留存率,结果保留小数点后面3位数(3位之后的四舍五入),并且查询结果按照日期升序排序,上面的例子查询结果如下:

查询结果表明:
2020-10-12登录了3个(user_id为2,3,1)新用户,2020-10-13,只有2个(id为2,1)登录,故2020-10-12新用户次日留存率为2/3=0.667;
2020-10-13没有新用户登录,输出0.000;
2020-10-14登录了1个(user_id为4)新用户,2020-10-15,user_id为4的用户登录,故2020-10-14新用户次日留存率为1/1=1.000;

2020-10-15没有新用户登录,输出0.000;

(注意:sqlite里查找某一天的后一天的用法是:date(yyyy-mm-dd, ‘+1 day’),sqlite里1/2得到的不是0.5,得到的是0,只有1*1.0/2才会得到0.5)

统计每个日期新用户的次日留存率相关推荐

  1. 每个日期新用户的次日留存率

    SQL练习题:网站每天有很多人登录,请你统计一下牛客每个日期新用户的次日留存率. 题目: 牛客每天有很多人登录,请你统计一下牛客每个日期新用户的次日留存率. 有一个登录(login)记录表,简况如下: ...

  2. 每日新增用户的次日留存率

    每日新增用户的次日留存率 第一种办法,传统解法: 先去重,然后3个join selectlog_day '日期',count(user_id_d0) '新增数量',count(user_id_d1) ...

  3. mysql统计今日首充用户_电商用户行为MySQL分析

    一:分析背景 近年来电商行业发展迅猛,发展的模式也从最开始粗糙的供给结构开始向精细化电商发展.我国政策也指出: 促进电子商务发展是推进供给侧结构性改革重要的途径.因此分析用户的行为,可打造爆款商品,爆 ...

  4. 全媒体运营师胡耀文教你:从Aha时刻来看新用户激活

    Aha时刻是新用户第一次认识到产品的价值,脱口而出"啊哈,原来这个产品可以帮我做这个".当花了大力气吸引来了一波新用户时,如何帮助留存转化,就要依靠Aha时刻. 2008年,当你宅 ...

  5. mysql 用户留存率计算(每日新增DNU,次日留存率,3日留存率,7日留存率)

    我是先学习了这位大神留存率的写法,然后我自己完善了一下.@阿柯@ 首先声明一下留存的概念 次日留存:1月1日注册的新用户,在1月2日登陆了app.即登陆日期 - 注册日期 = 1天. 3日留存:1月1 ...

  6. 统计每天的新老用户,日活,周活,月活

    版权声明:转载请注明出处! https://blog.csdn.net/ddxygq/article/details/81391718 最近有一个需求,统计每天的新老用户,日活,周活,月活. 我们每天 ...

  7. 用户留存率是什么?如何用sql求出次日留存率?

    建表sql语句: drop table if exists liucunlv; create table liucunlv as select * from ( select 'a' as user_ ...

  8. Excel 利用同期群分析计算新用户留存率

    业务分析方法中常用的有同期群分析,本文使用Excel和MySQL,结合同期群计算新注册用户的留存率,并放在实际的应用场景中进行分析. 一.简单介绍同期群分析 1.同期群分析(cohort analys ...

  9. SQL29 计算用户的平均次日留存率

    牛客网打卡:SQL29 计算用户的平均次日留存率 解题思路 题目给出的意思: 不考虑用户的答题情况,只考虑是否答题了 也就是选出两张表,第一张是当天的答题情况,第二张是第二天的情况 时刻理解新的虚拟表 ...

  10. hive统计每日的活跃用户和新用户sql开发(附shell脚本)

    假如有一个web系统,每天生成以下日志文件: 2020年12月21日数据 192.228.33.6,hunter,2020-12-21 10:30:20,/a 192.228.33.7,hunter, ...

最新文章

  1. php设置id递增,php实现雪花算法(ID递增)
  2. 让网管暴寒的网络故障(一笑了之)
  3. python导入excel文件-python使用xlrd模块读写Excel文件的方法
  4. vue 在进入某一个页面的时候,created方法不执行,----亲测,通俗易懂
  5. Apache部署网页-Ubuntu16.04
  6. WinForm之创建word并操作文档
  7. exe文件添加为服务
  8. vld不输出泄漏信息_光纤天线方案和泄漏电缆方案的比较
  9. test2 3-16 2021 模拟赛two
  10. vue或js解析文件excel表格js通过插件解析表格读取文件
  11. ajax请求l类型,jquery 的ajax请求示例和注意事项
  12. HTML表格、表单,以及新表单属性
  13. 【截至2006.12.31】毒霸反间谍可清除的部分流氓软件清单
  14. Error starting ApplicationContext. To display the auto-configuration report re-run your application
  15. 开源版多用户博客系统
  16. python使用selenium调用edge浏览器webdriver
  17. 三菱plc pwm指令_三菱PLC高速处理指令编程
  18. RequestError Error connect ETIMEDOUT 59.24.3.174443
  19. 荣耀手机环比倍增,小米有点受伤
  20. gwas snp 和_2型糖尿病GWAS关联SNP对miRNA-mRNA互作的影响分析

热门文章

  1. [Irving]字符串相似度-字符编辑距离算法(c#实现)
  2. JVM堆外内存回收原理
  3. ODT,ZQ校准,OCT,TDQS
  4. 带薪拉屎是一种怎样的体验
  5. 程序员视角:鹿晗公布恋情是如何把微博搞炸的?
  6. java 发微信视频_分享java微信开发视频
  7. Python对文件(外存)和内存的操作
  8. 基于javaweb+jsp的晚会抽奖系统(java+Jdbc+Servlet+Ajax+mysql)
  9. 【论文翻译】Flow-Guided Feature Aggregation for Video Object Detection
  10. 阿里云服务器从购买到配置全攻略