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

  官网链接:

牛客每个人最近的登录日期(五)_牛客题霸_牛客网牛客每天有很多人登录,请你统计一下牛客每个日期新用户的次日留存率。 有一个登录(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.mzph.cn/news/671522.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SQL,HQL刷题,尚硅谷

目录 相关表数据: 题目及思路解析: 汇总分析 1、查询编号为“02”的课程的总成绩 2、查询参加考试的学生个数 分组 1、查询各科成绩最高和最低的分,以如下的形式显示:课程号,最高分,最低分 2、查询每门课程…

板块一 Servlet编程:第一节 HTTP协议理论与服务器请求响应原理 来自【汤米尼克的JAVAEE全套教程专栏】

板块一 Servlet编程:第一节 HTTP协议理论与服务器请求响应原理 一、HTTP特点二、HTTP中的 URL三、两种 HTTP 请求方法:GET 和 POST四、请求响应的底层请求头在服务器中表现响应头在服务器中表现 在上一个板块中我们完成了所有IDEA的基础配置工作&#xf…

挑战杯 python+大数据校园卡数据分析

0 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 基于yolov5的深度学习车牌识别系统实现 🥇学长这里给一个题目综合评分(每项满分5分) 难度系数:4分工作量:4分创新点:3分 该项目较为新颖&am…

【PTA选择题/基础夯实/期末复习】链表文件操作

2-1 对于一个头指针为head的带头结点的单链表,判定该表为空表的条件是()。 A.headNULL B.head→nextNULL C.head→nexthead D.head!NULL 2-2 链表不具有的特点是()。 A.可随机访问任一元素 B.插入、删除不需要移…

第 383 场 LeetCode 周赛题解

A 边界上的蚂蚁 模拟 class Solution { public:int returnToBoundaryCount(vector<int> &nums) {int s 0;int res 0;for (auto x: nums) {s x;if (s 0)res;}return res;} };B 将单词恢复初始状态所需的最短时间 I 枚举&#xff1a;若经过 i i i 秒后 w o r d w…

CTF-show WEB入门--web19

今晚web19也就顺便解决了 老样子我们先打开题目看看题目提示&#xff1a; 可以看到题目提示为&#xff1a; 密钥什么的&#xff0c;就不要放在前端了 然后我们打开题目链接&#xff1a; 然后我们查看网页源代码&#xff1a; 可以发现有用的内容全在网页源代码里。 前端验证…

spring boot(2.4.x之前版本)和spring cloud项目中配置文件的作用

为了防止理解问题&#xff0c;pom.xml 版本依赖如下 <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.3.12.RELEASE</version><relativePath/> <!--…

(十三)springboot实战——springboot前后端分离方式项目集成spring securtity安全框架

前言 Spring Security 是一款强大且高度可定制的认证和访问控制框架&#xff0c;它是为了保护基于Spring的应用程序提供安全性支持。Spring Security提供了全面的安全服务&#xff0c;主要针对企业级应用程序的需求。其核心组件主要包含&#xff1a;Authentication&#xff08…

获取 Github XX项目软件最新版本方法(通过命令行)

场景&#xff1a; 如果我们项目中需要实现某个Github公共软件的最新版本更新 那么获取软件的最新的发布版本就是一个比较重要的工作了 对此&#xff0c;Github提供对外api不需要自己手动填写脚本了 解决方案&#xff1a; 替换黄色字体的项目地址&#xff0c;然后在cmd中执行…

CentOS 7安装Nodejs

说明&#xff1a;本文介绍如何在云服务器上CentOS 7操作系统上安装Nodejs。以及安装过程中遇到的问题。 下载压缩包&解压 首先&#xff0c;先去官网下载Linux版本的Node。 将下载下来的压缩包&#xff0c;上传到云服务器上&#xff0c;解压。配置环境变量。 &#xff08…

Leetcode 45. 跳跃游戏 II

本题与55. 跳跃游戏十分类似&#xff0c;区别在于本题是要求出最小的跳跃次数。 在55. 跳跃游戏的框架上&#xff0c;我们需要增加一些东西&#xff1a; 既然要计算最小跳跃次数&#xff0c;就需要用一个变量计数跳跃的次数&#xff1b;需要一次前瞻&#xff0c;来计算之后那次…

力扣经典题:相交链表

题目分析&#xff1a;两个链表如果相交且不存在环&#xff0c;那么这两个链表从相交节点往后的节点都相同&#xff0c;所以&#xff0c;遍历一个链表&#xff0c;在遍历时不断遍历另一个链表&#xff0c;只要相等就可以返回了 struct ListNode *getIntersectionNode(struct Li…

使用 git 上传文件时,运行 命令 git pull origin 时未成功,出现报错信息

项目场景&#xff1a; 背景&#xff1a; 使用 git 上传文件时&#xff0c;运行 命令 git pull origin 时未成功&#xff0c;出现报错信息 问题描述 问题&#xff1a; $ git pull origin print --allow-unrelated-histories error: Pulling is not possible because you hav…

《C程序设计》上机实验报告(七)之指针的应用

实验内容&#xff1a; 1.运行程序 #include <stdio.h> void main() { int a10,*p; p&a; printf("%d",*p); scanf("%d",p); printf("%x",p); printf("%x",&p); *p5; printf("%d"…

React+Echarts实现数据排名+自动滚动+Y轴自定义toolTip文字提示

1、效果 2、环境准备 1、react18 2、antd 4 3、代码实现 原理&#xff1a;自动滚动通过创建定时器动态更新echar的dataZoom属性startValue、endValue&#xff0c;自定义tooltip通过监听echar的鼠标移入移出事件&#xff0c;判断tooltTip元素的显隐以及位置。 1、导入所需组…

Linux安全技术与iptables防火墙

一.安全技术&#xff1a; 入侵检测系统&#xff08;Intrusion Detection Systems&#xff09;&#xff1a;特点是不阻断任何网络访问&#xff0c;量化、定位来自内外网络的威胁情况&#xff0c;主要以提供报警和事后监督为主&#xff0c;提供有针对性的指导措施和安全决策依据,…

IDEA上传Gitee出错

问题 今天想通过 IDEA 更下新 gitee 上的代码是发生了这个错误。 解决 在 IDEA 终端输入 git config --system --unset credential.helper原因 在一个大佬那里找到了原因 大概意思是-远端仓库的账号和密码错误&#xff0c;你本地有过账号密码登录记录&#xff0c;但不知道…

Leetcode—60. 排列序列【困难】

2024每日刷题&#xff08;113&#xff09; Leetcode—60. 排列序列 算法思想 实现代码 class Solution { public:string getPermutation(int n, int k) {vector<int> nums(n);// f[i] i!vector<int> f(n 1, 1); string ans;iota(nums.begin(), nums.end(), 1…

搜索与图论(一)(深搜,广搜,树与图的存储遍历,拓扑排序)

一、DFS 往深里搜&#xff0c;搜到叶子结点那里&#xff0c;回溯&#xff0c;到可以继续到叶子结点深搜的位置。 1、回溯一定要恢复现场 2、定义一个与当前递归层数有关的终止条件&#xff08;题目要求的东西&#xff09; 3、每层都用循环判断是否存在可以dfs的路 输出数字…

架构学习(五):scrapy实现自定义代理中间件

scrapy实现自定义代理中间件 前言关卡&#xff1a;实现自定义代理中间件代理中间件源码解析代理池自定义代理中间件 结束 前言 ip检测是比较常规的反爬手段&#xff0c;一般站点会限制ip的访问频率&#xff0c;或者根据ip的访问规律和频率来识别异常访问&#xff0c;从而点对点…