SQL面试题练习 —— 计算次日留存率

题目

现有用户登录记录表,已经按照用户日期进行去重处理。以用户登录的最早日期作为新增日期,请计算次日留存率是多少。

样例数据

+----------+-------------+
| user_id  | login_date  |
+----------+-------------+
| aaa      | 2023-12-01  |
| bbb      | 2023-12-01  |
| bbb      | 2023-12-02  |
| ccc      | 2023-12-02  |
| bbb      | 2023-12-03  |
| ccc      | 2023-12-03  |
| ddd      | 2023-12-03  |
| ccc      | 2023-12-04  |
| ddd      | 2023-12-04  |
+----------+-------------+

样例结果

在这里插入图片描述

建表语句

CREATE TABLE t_login_040 (
  user_id VARCHAR(255) COMMENT '用户ID',
  login_date VARCHAR(255) COMMENT '登录日期'
) COMMENT '用户登录记录表';
insert into t_login_040(user_id,login_date)
values
('aaa','2023-12-01'),
('bbb','2023-12-01'),
('bbb','2023-12-02'),
('ccc','2023-12-02'),
('bbb','2023-12-03'),
('ccc','2023-12-03'),
('ddd','2023-12-03'),
('ccc','2023-12-04'),
('ddd','2023-12-04');

题解

指标定义:

  • 次日留存用户:新增用户第二天登录(活跃)的用户;
  • 次日留存率: t + 1 t+1 t+1日留存用户数 / t t t日新增用户;(注意新增可能为0,要先判断)
select
first_day,
-- 当天新增用户数可能为1
concat(if(count(case when date_diff = 0 then user_id end) =0,0,
					round(count(case when date_diff =1 then user_id end) /count(case when date_diff = 0 then user_id end),1))*100,'%') next_act_per
-- count(case when date_diff = 0 then user_id end) as new_cnt, -- 当天新增用户数
-- count(case when date_diff =1 then user_id end) as next_act_cnt -- 次日登录的用户数
from
(select
  user_id,
  login_date,
-- 	计算出用户的最小登录时间作为新增日期first_day,然后计算当天日期和新增日期的时间差。
  min(login_date) over(partition by user_id order by login_date) first_day,
  datediff(login_date,min(login_date)over(partition by user_id order by login_date)) date_diff
from t_login_040)t
group by first_day
order by first_day;

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

负载箱:充电桩测试利器

随着新能源汽车的普及,充电桩的需求也在不断增长。为了保证充电桩的安全、稳定和高效运行,对其进行严格的测试是必不可少的。在这个过程中,负载箱就成为了充电桩测试的重要工具。 负载箱模拟电动汽车充电的设备,它可以模拟真实的充…

轻兔推荐 —— 一个好用的软件服务推荐平台

给大家推荐一个好用的的软件服务推荐平台:轻兔推荐 网站界面简洁大方,没有太多杂七杂八的功能和页面,有明暗主题色可以选择,默认为亮色,可在网站上方手动切换。 每工作日都会推荐一款软件,有时会加更&…

高铁Wifi是如何接入的?

使用PC端的朋友,请将页面缩小到最小比例,阅读最佳! 在飞驰的高铁上,除了窗外一闪而过的风景,你是否好奇过,高铁Wifi信号如何连接的呢? 远动的火车可不能连接光纤吧,难道是连接的卫星…

深入理解python列表遍历:两种方法详解与实例

新书上架~👇全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我👆,收藏下次不迷路┗|`O′|┛ 嗷~~ 目录 一、引言 二、使用索引遍历列表 三、直接使用元素遍历列表 四、总结 一、引言 在编程过程…

python-数据可视化(总)

python-数据可视化 ** 数据可视化 指的是通过可视化表示来探索数据,它与数据挖掘**紧密相关,而数据挖掘指的是使用代码来探索数据集的规律和关联。数据集可以是用一行代码就能表示的小型数字列表,也可以是数以吉字节的数据 最流行的工具之一…

智慧冶金:TSINGSEE青犀AI+视频技术助力打造高效、安全的生产环境

一、建设背景 冶金行业因其特殊的生产环境和工艺要求,对安全生产、环境保护以及质量监控等方面有着极高的要求。因此,将视频智能监控技术引入冶金行业,不仅有助于提升生产效率,更能有效保障生产安全,降低事故风险。 …

[ARM-2D 专题] arm-2d项目简介

Arm-2D 是一个用于 Cortex-M 处理器上的 2.5D 图像处理的开源项目。 由ARM公司开发和维护,属于官方性质的项目,目前最新版本为V1.1.6. 2022年7月发布1.0的预览版, 2023年2月发布第一个正式版V1.1.1,近一年来快速迭代和功能增强&a…

基于序列深度学习模型的向量海岸线形状分类方法 2024.05

本文中提出了一个数据驱动的方法来分类的形状矢量海岸线,该方法利用基于序列的深度学习算法对海岸线矢量分段进行建模和分类。具体而言,首先将复杂的海岸线划分为一系列弯曲,并进一步提出了一组不同的特征来描述每个弯曲的形态特征。然后&…

基于Spring 框架中的@Async 注解实现异步任务

Async 是 Spring 框架中的一个注解,用于实现方法级别的异步执行。使用 Async 可以让你的代码在非当前线程中执行,从而提高应用的并发性能。 1、 启用异步支持 在 Spring 应用的主配置类或任何其他配置类上添加 EnableAsync 注解来开启异步任务的支持 …

WordPress中借助Table of Contents Plus+Widget Options插件,实现仅在文章侧边栏显示文章目录的功能

本文转自博主的个人博客:https://blog.zhumengmeng.work,欢迎大家前往查看。 原文链接:点我访问 序言:今天心血来潮,写了一篇文章,忽然发现自己的文章极少有目录,这对于长文章的阅读来说是十分不利的&#…

Android14 WMS-窗口添加流程(一)-Client端

窗口布局在onCreate方法中通过setContentView(R.layout.xxx)加载,但窗口的显示并不是在wm_on_create_called中, 而是在wm_on_resume_called后,也就是说应用onResume时此窗口是不可见的,真正可见是当此window窗口的mDrawState变化状态从NO_SUR…

2024年社会发展、人文艺术与文化国际会议(ICSDHAC 2024)

2024年社会发展、人文艺术与文化国际会议(ICSDHAC 2024) 会议简介 2024年国际社会发展、人文、艺术和文化会议(ICSDHAC 2024)将在广州举行。会议旨在为从事社会发展、人文、艺术和文化研究的专家学者提供一个平台,分…

xjar加密springboot的jar包,并编译为执行程序

场景:当前项目需要进行jar包部署在windows环境和linux环境,并要求使用xjar加密。 1. xjar加密 源码程序自行搜索,这里只介绍加密及运行,运行加密程序,指定jar包,输入密码 2. 加密后的目录 3. go程序编译 …

Vanna使用ollama分析本地MySQL数据库

上一章节中已经实现了vanna的本地运行,但是大模型和数据库都还是远程的,因为也就没办法去训练,这节一起来实现vanna分析本地mysql数据库,因为要使用本地大模型,所以开始之前需要给本地安装好大模型,我这里用…

【数据结构】二叉搜索树——高阶数据结构的敲门砖

目录 树概述 二叉搜索树概述 概念 特性 元素操作 插入 删除 模拟实现 框架 查找 插入 删除 树概述 树——在计算机中是一种很常见的数据结构。 树是一种很强大的数据结构,数据库,linux操作系统管理和windows操作系统管理所有文件的结构就是…

PS教程08

光效 新建一个图层 按住Altdelete将颜色填充完毕。 转换智能对象 作用:我们可以对这个图层无限期修改 接下来找到滤镜-渲染-镜头光晕 选择需要的亮度和镜头类型,点击确定 如果发现位置不太理想,可以直接双击右下角的镜头光晕,…

swagger-ui页面接口的入参出参与代码实体类不一致有差异、swagger请求实体与预期定义不符、swagger参数与实体中参数不一致原因分析

文章目录 一、问题背景二、问题原因及解决方法 一、问题背景 项目集成swagger之后,发现有个接口的请求跟接口对应不上,把其他接口的请求参数放到当前这个请求上了。 如下图:test1接口的请求参数是其他请求的,并不是test1接口的 …

RFID芯片掼蛋牌:高科技与传统玩法结合,游戏体验焕然一新。

火爆“出圈”的掼蛋,是一种玩法相当鲜明的智力游戏。近年来得到了不少的推广和发展,各地举办了各种掼蛋比赛和活动,吸引了大量的参赛者和观众。此外,一些企业和机构也开始将掼蛋作为一种企业文化或者社交活动的方式,通…

无需开孔,安全美观:低功耗微波雷达模块开启宠物喂食器新未来

在快节奏的现代生活中,宠物已成为许多家庭的重要成员。然而,忙碌的主人常常为如何确保宠物按时进食而困扰。近年来,智能家居技术飞速发展,宠物喂食器也逐渐智能化,极大地方便了宠物主人。今天,我们要介绍的…

项目成功的关键要素:进度管理

在项目管理中,进度管理是决定项目成败的关键因素之一。它关乎项目能否在预定的时间范围内高效、准确地完成既定目标。 一、进度管理的重要性 1、时间控制:项目的成功往往与时间的把握息息相关。进度管理能够确保项目在既定的时间框架内有序进行&#x…