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

牛客网SQL264:查询每个日期新用户的次日留存率

  官网链接:

牛客每个人最近的登录日期(五)_牛客题霸_牛客网牛客每天有很多人登录,请你统计一下牛客每个日期新用户的次日留存率。 有一个登录(login。题目来自【牛客题霸】icon-default.png?t=N7T8https://www.nowcoder.com/practice/ea0c56cd700344b590182aad03cc61b8?tpId=82

0 问题描述

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

1 数据准备

drop table if exists login;
CREATE TABLE `login` (
`id` int(4) NOT NULL,
`user_id` int(4) NOT NULL,
`client_id` int(4) NOT NULL,
`date` date NOT NULL,
PRIMARY KEY (`id`));INSERT INTO login VALUES
(1,2,1,'2020-10-12'),
(2,3,2,'2020-10-12'),
(3,1,2,'2020-10-12'),
(4,2,2,'2020-10-13'),
(5,1,2,'2020-10-13'),
(6,3,1,'2020-10-14'),
(7,4,1,'2020-10-14'),
(8,4,1,'2020-10-15');

2 数据分析

方式一的完整代码如下:

select`date`,round(ifnull (count(next_user_id) / count(user_id), 0),3) as rate
from(selectt0.`date`,t1.user_id as user_id,t1.first_date,t2.user_id as next_user_id,t2.`date` as next_datefrom(select`date`fromlogingroup by`date`) as t0left join (selectuser_id,min(date) as first_datefromlogingroup byuser_id) t1 on t0.`date` = t1.first_dateleft join login as t2 on t1.user_id = t2.user_idand datediff (t2.`date`, t1.first_date) = 1order byt0.`date`) t3
group by`date`;

上述代码分析

步骤一:使用左连接left join,得到所有第一次登陆的人及其第一次登录的日期

(selectuser_id,min(date) as first_datefromlogingroup byuser_id
) t1

 步驟二:使用datediff函数判断新增用户的次日登录情况

left join login as t2 on t1.user_id = t2.user_idand datediff (t2.`date`, t1.first_date) = 1

 步骤三:ifnull函数进行null值判断及补全

 ifnull (count(next_user_id) / count(user_id), 0)

     因为不是每天都有新登录的用户,这些没有新登陆用户的日期,会导致分母为0,因此利用ifnul函数进行null值补全

3  小结

     每日新增用户的1日留存,也称为次日留存,代表的意思是:当日新增用户登录后,第二日继续登陆了。

http://www.lryc.cn/news/296901.html

相关文章:

  • echarts 曲线图自定义提示框
  • 幻兽帕鲁服务器怎么搭建?Palworld多人联机教程
  • DAY39: 动态规划不同路径问题62
  • idea开发工具的简单使用与常见问题
  • 使用 WMI 查询安全软件信息
  • 创建TextMeshPro字体文件
  • 信创ARM架构QT应用开发环境搭建
  • 使用SPM_batch进行批量跑脚本(matlab.m)
  • 力扣0124——二叉树的最大路径和
  • c# 字符串帮助类
  • LabVIEW双光子荧光显微成像系统开发
  • Prim模板
  • CSS之盒子模型
  • Linux系统安装(CentOS Vmware)
  • STM32 硬件随机数发生器(RNG)
  • Window环境下使用go编译grpc最新教程
  • STM32——FLASH(1)简单介绍、分类、读写流程及注意事项
  • MySQL的DML语言
  • Vivado-IP核
  • 品牌如何营造生活感氛围?媒介盒子分享
  • Java 学习和实践笔记(2)
  • Python:批量url链接保存为PDF
  • 【LeetCode每日一题】525连续数组 303区域和检索(前缀和的基本概念和3个简单案例)
  • 形态学算法应用之连通分量提取的python实现——图像处理
  • Kafka系列之:Kafka集群同时设置基于时间和日志大小两种方式保存Topic的数据
  • pytest+allure批量执行测试用例
  • SpringBoot和SpringMVC
  • 免费搭建幻兽帕鲁服务器,白嫖阿里云游戏服务器
  • [技术杂谈]如何下载vscode历史版本
  • nginx slice模块的使用和源码分析