大厂面试经典高阶SQL题--次日留存率

为什么写这么一篇文章呢,因为在之前的基金公司面试,1/50的录取几率,很荣幸自己可以打败这么多候选人,被上海著名某基金公司录取。有一大半人卡在了笔试环节,就说我自个厂商招的一群小伙伴,在办公室做题的时候,很多小伙伴直接放弃了,知道自己连笔试都过不了。

而次日留存率,就是其中的第一道笔试题,足以说明它要求面试者的SQL素养之高。

ok,接下来给大家详解一下本题的思路。

0,题目需求

有一张用户登录表(user_login_table),请统计每个日期新用户的次日留存率。

user_idclient_idlogin_date
1A0022024-11-12
2A0052024-11-12
3A0022024-11-12
1A0062024-11-13
2A0012024-11-13
3A00092024-11-14
4A00082024-11-14
4A00072024-11-15
5A02492024-11-15

在这里,有一个特别重要的概念,需要跟大家解释一下:
次日留存率:在一段时间(如第一天)的新增用户中,在第二天再次成功启动应用登录的比例。

1,解题思路

首先,审题之后,总归是要知道他的一个最终的结果的。

咱把结果数据展示一下:

daterate_of_next_surv--计算过程
2024-11-120.667(1,2)/(1,2,3)
2024-11-130/
2024-11-140.5(4)/(3,4)

最终的结果,咱只展示date和rate_of_next_surv这两个字段即可。

dateratesurv
2024-11-120.667
2024-11-130
2024-11-140.5

这么得来的呢??

完我们在计算某天留存率的时候,当然是看看下一天,有哪些客户还存在登录(当然,就需要客户去关联),但是,时间也需要错位关联!!!关联上的,就是留存下来的总人数。

2,解题代码

--有一张用户登录表(user_login_table),请统计每个日期新用户的次日留存率。--user_id	 client_id	login_date  date	ratesurvselect count(t1.user_id)--统计当天的所有用户数,t1.login_date,count(t2.user_id)  --统计后一天关联上的用户,注意count(字段),会忽略字段的null值,count(t2.user_id)/count(t1.user_id) as  ratesurv  --次日留存率from      user_login_table t1left join user_login_table t2on t1.user_id = t2.user_idand t1.login_date = date_sub(t2.user_id,-1)group by t1.login_date;

上面涉及到两个重要知识点:

1,属于表的自关联,关联条件,除了用户,还有时间(错位关联)。

2,count(用户),会忽略字段为null的数据,言外之意,没有关联上的,就不统计。

当然,笔试过程中我们保留所需要的字段展示就可以了。

题目不难,但思路很重要。


欢迎一键三连,下次再会!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/39086.shtml

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

相关文章

备份SQL Server数据库并还原到另一台服务器

我可以将SQL Server数据库备份到另一台服务器吗? 有时您可能希望将 SQL数据库从一台服务器复制到另一台服务器,或者将计算机复制到计算机。可能的场景包括测试、检查一致性、从崩溃的机器恢复数据库、在不同的机器上处理同一个项目等。 是的&#xff0c…

【嵌入式】探索嵌入式世界:在ARM上构建俄罗斯方块游戏的奇妙之旅

文章目录 前言:1. 简介2. 总体设计思路及功能描述2.1 设计思路2.2 功能描述2.3 程序流程图 3. 各部分程序功能及详细说明3.1 游戏界面函数3.1.1 游戏界面中的图片显示3.1.2 游戏开始界面3.1.3 游戏主界面3.1.4 游戏结束广告界面3.1.5 游戏界面中的触摸反馈3.1.6 游戏…

C++11新特性【下】

一、lambda表达式 在C98中,如果想要对一个数据集合中的元素进行排序,可以使用std::sort方法。如果待排序元素为自定义类型,需要用户定义排序时的比较规则,随着C语法的发展,人们开始觉得上面的写法太复杂了&#xff0c…

自动备份Docker中的mysql数据库

先说一下,在Linux下备份mysql 1、先创建一个脚本文件 #!/bin/bash # MySQL 用户、密码、数据库名称 DB_USER"dbuser" DB_PASSWORD"dbpassword" DATABASE"mydatabase" # 创建备份目录 BACKUP_DIR"/path/to/your/backup/dire…

化身李时珍弟子,演绎中医药故事,李良济花神戏,创新传承中医药文化

6月29日,李良济与花神戏联袂举办的儿童剧本,在李良济嵩山店强势开启。 20余名小朋友,一起在这次中医药儿童剧本活动中,化身李时珍弟子,学中医,识草药,传承中医智慧,沉浸式学习传统文…

Spring Boot与Apache Kafka的深度集成

Spring Boot与Apache Kafka的深度集成 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!今天我们将探讨如何在Spring Boot应用中实现与Apache Kafka的深度集成&am…

关于一维,二维正态分布的绘制

绘制一维正态分布代码 % 给定的均值和标准差 mu 0; % 例如,你可以改变这个值 sigma 1; % 例如,你可以改变这个值 % 定义x的范围(例如,从mu-3*sigma到mu3*sigma,步长为0.1) x mu - 3*sigma:0.1:m…

STM32 中断编程入门

目录 一、中断系统 1、中断的原理 2、中断类型 外部中断 定时器中断 DMA中断 3、中断处理函数 中断标志位清除 中断服务程序退出 二、实际应用 中断控制LED 任务要求 代码示例 中断控制串口通信 任务要求1 代码示例 任务要求2 代码示例 总结 学习目标&…

ROS学习笔记(17):建图与定位(1)

目录 0.前言 1.定位和建图 1.里程计(Odometry) 2.扫描匹配(Scan Matching) 3.结尾 0.前言 好久不见各位,前段时间忙着考试(6级和一些专业课)和摆烂断更了近30天,现在哥们回来更…

计算机毕业设计Python+Spark股票基金推荐与预测系统 股票基金可视化 股票基金推荐系统 股票基金可视化系统 股票基金数据分析 股票基金爬虫大数据

目 录 摘 要 Abstract 第1章 前 言 1.1 项目的背景和意义 1.2 研究现状 1.3 项目的目标和范围 1.4 论文结构简介 第2章 技术与原理 2.1 开发原理 2.2 开发工具 2.3 关键技术 第3章 需求建模 3.1 系统可行性分析 3.2 功能需求分析 3.3 非功能性…

C++Primer Plus 第十四章代码重用:编程练习,第一题

CPrimer Plus 第十四章代码重用:编程练习,第一题 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 CPrimer Plus 第十四章代码重用:编程练习,第一题 提示:写完文章后,目录可以自动生成&am…

高职人工智能专业实训课之“生成对抗网络(GAN)”

一、前言 生成对抗网络(GAN)作为人工智能领域的一项重要技术,已经在图像生成、风格迁移、数据增强等多个领域展现出巨大的潜力和应用价值。为了满足高职院校对GAN专业实训课程的需求,唯众人工智能教学实训凭借其前沿的教育技术平…

mst[讲课留档]

最小生成树(Minimum Spanning Tree) (1)概念 我们知道,树是有 n n n个结点, n − 1 n-1 n−1条边的无向无环的连通图。 一个连通图的生成树是一个极小的连通子图,它包含图中全部的 n n n个顶点,但只有构成一棵树的 n − 1 n-1 …

内容营销专家刘鑫炜:越是赚不到钱,越要加大推广力度

这两天,一位跟我们有长期合作关系的小微企业主老苏问我。 “现在钱这么不好赚,品牌推广应该怎么做?” 我说:“这是好机会,加大投放力度!” 老苏很是不解,这时候不开源节流,还要加…

使用Git从Github上克隆仓库,修改并提交修改

前言 本次任务主要是进行github提交修改的操作练习实践,本文章是对实践过程以及遇到的问题进行的一个记录。 在此之前,我已经简单使用过github,Git之前已经下好了,所以就省略一些步骤。 步骤记录 注册github账号,gi…

【C++】C++指针在线程中调用与受保护内存空间读取方法

引言 在C的多线程编程中,正确地管理内存和同步访问是确保程序稳定性和安全性的关键。特别是当涉及到指针在线程中的调用时,对受保护内存空间的访问必须谨慎处理,以防止数据竞争、死锁和内存损坏等问题。本文将详细探讨C指针在线程中调用时如何…

理解 React 的严格模式

文章目录 有什么优劣优点:缺点: 使用场景如何使用为整个应用启用严格模式一部分代码启用严格模式 React 的 Strict Mode(严格模式)是一种用于检测应用中潜在问题的开发工具。它不会渲染任何可见的 UI 元素,而是通过激活…

element-ui如何做表单验证

Element UI 使用表单验证通常涉及两个主要组件&#xff1a;el-form 和 el-form-item。 el-form 负责管理表单数据和验证规则&#xff0c;而 el-form-item 用于定义需要验证的表单项。 <template><el-form :model"form" :rules"rules" ref"fo…

易校网校园综合跑腿小程序源码修复运营版

简介&#xff1a; 易校网校园综合跑腿小程序源码修复运营版&#xff0c;带服务端客户端前端文档说明。 源码安装方法&#xff1a; 需要准备小程序服务号 服务器 备案域名 校园网跑腿小程序源码需要准备 1.小程序 2.服务器&#xff08;推荐配置2h4g3m&#xff09; 3.域名…

使用JMeter+Grafana+Influxdb搭建可视化性能测试监控平台

【背景说明】 使用jmeter进行性能测试时&#xff0c;工具自带的查看结果方式往往不够直观和明了&#xff0c;所以我们需要搭建一个可视化监控平台来完成结果监控&#xff0c;这里我们采用三种JMeterGrafanaInfluxdb的方法来完成平台搭建 【实现原理】 通过influxdb数据库存储…