【已解决】数据库常见场景应用计算次日留存率

简介: 【已解决】数据库常见场景应用计算次日留存率

记录一个数据库中常见的应用场景,需要计算用户次日留存率(次留分析),查询出计算的用户留存率。

结合这个应用背景,牛客网站上的 SQL29 计算用户的平均次日留存率 非常适合拿来练习,下面就以牛客上的这道题目作为示例。

题目描述:现在运营想要查看用户在某天刷题后第二天还会再来刷题的平均概率,请你取出相应数据。

示例:question_practice_detail

id device_Id quest_id result date
1 2138 111 wrong 2021-05-23
2 3214 112 wrong 2021-05-09
3 3214 113 wrong 2021-06-15
4 6543 111 right 2021-08-13
5 2315 115 right 2021-08-13
6 2315 116 right 2021-08-14
7 2315 117 wrong 2021-08-15

根据示例,查询应返回以下结果:

avg_ret
0.3000

解决方案:

限定条件:首先将表里的数据看作全部都是第一天来刷题的,之后只要构造出第二天来的字段,因此可以考虑使用 left join 把第二天来了的拼接起来,限定第二天来了的可以用 date_add(date1, interval 1 day) 筛选,并用 device_id 限定是同一个用户。

平均概率:可以使用 count(date1) 得到左表全部的 date 记录数作为分母,count(date2) 得到右表关联上了的 date 记录数作为分子,相除即可得到平均概率。

注意事项:

表头重命名:as

去重:需要按照 devece_id, date 去重,因为一个人同一天可能来多次,但是只需要记录一次用户来过的记录即可

子查询必须全部有重命名:尽管可能不会在最终的查询字段中用到,但是必须要写,这是语法规定!

查询代码如下:

select count(date2) / count(date1) as avg_ret
from (
    select
        distinct qpd.device_id,
        qpd.date as date1,
        uniq_id_date.date as date2
    from question_practice_detail as qpd
    left join(
        select distinct device_id, date
        from question_practice_detail
    ) as uniq_id_date
    on qpd.device_id=uniq_id_date.device_id
        and date_add(qpd.date, interval 1 day)=uniq_id_date.date
) as id_last_next_date
相关文章
|
6天前
|
SQL Java 关系型数据库
应用DriverManager类创建sqlserver数据库连接实例 JSP中使用数据库
该博客文章介绍了在JSP中使用JDBC连接SQL Server数据库的方法,包括加载数据库驱动、建立数据库连接的过程,并提供了一个使用DriverManager类创建数据库连接的Java示例代码。
|
19天前
|
存储 监控 安全
【计算机三级数据库技术】第1章 数据库应用系统生命周期下知识体系--附思维导图
本文提供了数据库应用系统生命周期下的知识体系概述,并附有思维导图,帮助读者更好地理解数据库技术及应用的第一章内容,涵盖了数据库系统的规划、分析、设计、实现、测试、运行和维护等各个阶段。
34 12
|
21天前
|
SQL canal Serverless
Serverless 应用引擎使用问题之每次记录的数据很少,如何不使用外链数据库储存数据
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
|
18天前
|
数据可视化 架构师 测试技术
【计算机三级数据库技术】第5章 UML与数据库应用系统--附思维导图
本文提供了UML在数据库应用系统设计中的应用概览,包括UML建模框架、视图、四大图的介绍,以及如何使用活动图、用例图、类图、顺序图等UML图来表达业务流程、系统需求和内部结构,最后还涉及了系统微观和宏观设计的UML表达方式。
25 4
|
16天前
|
人工智能 NoSQL 关系型数据库
现代数据库技术发展趋势与应用前景探析
在当今数字化时代,数据库技术正日益成为信息管理与应用开发的核心。本文从现代数据库技术的发展趋势出发,探讨了关系型数据库、NoSQL数据库以及新兴的分布式数据库技术,分析它们在各自领域的优势与挑战。结合实际应用场景,探索现代数据库技术的应用前景,为技术从业者提供思路与参考。
|
18天前
|
存储 安全 测试技术
【计算机三级数据库技术】第4章 数据库应用系统功能设计与实现--附思维导图
重点介绍了数据库应用系统(DBAS)的功能设计和实现。
11 1
|
23天前
|
SQL 存储 安全
SQL数据库:核心原理、应用实践与未来展望
在电子商务领域,SQL数据库用于存储商品信息、用户信息、订单信息等。通过SQL数据库,电商平台可以实现商品的快速检索、用户行为的跟踪分析、订单状态的实时更新等功能,提升用户体验和运营效率。
|
25天前
|
存储 人工智能 自然语言处理
比Coze AI工作流更简单,用AI数据库打造一个AI笑话大师应用
本文展示如何利用iThinkAir的AI数据库创建一个能生成图文并茂笑话的“笑话大师”。通过构建本地化的数据库,结合多种视图展示形式,并利用AI指令流自动化生成内容。主要步骤包括建立数据库与表结构、定义字段类型如“指令流”以触发AI工作流程。流程涉及条件判断、文本合成与分割、AI模型生成笑话及其插图等内容。最终,笑话大师不仅能生成多样化笑话,还能通过不同方式分享给他人使用,如发布应用、授权协作或备份导出文件。这不仅是一个创意项目示例,也为AI数据库应用开发提供了灵感。
|
27天前
|
缓存 NoSQL 数据库
Redis问题之在高并发场景下,保证Redis缓存和数据库的一致性如何解决
Redis问题之在高并发场景下,保证Redis缓存和数据库的一致性如何解决
|
4天前
|
存储 NoSQL 关系型数据库
Web中的数据库:原理、应用与代码实现
Web中的数据库:原理、应用与代码实现