微信小程序是什么语言开发的/东莞搜索优化

微信小程序是什么语言开发的,东莞搜索优化,网站权重转移做排名,wordpress密钥生成服务SQL29 计算用户的平均次日留存率 计算用户的平均次日留存率_牛客题霸_牛客网 题目:现在运营想要查看用户在某天刷题后第二天还会再来刷题的留存率。 示例:question_practice_detail -- 输入: DROP TABLE IF EXISTS question_practice_detai…

SQL29 计算用户的平均次日留存率

计算用户的平均次日留存率_牛客题霸_牛客网

题目:现在运营想要查看用户在某天刷题后第二天还会再来刷题的留存率。


示例:question_practice_detail

-- 输入:
DROP TABLE IF EXISTS `question_practice_detail`;
CREATE TABLE `question_practice_detail` (`id` int NOT NULL,`device_id` int NOT NULL,`question_id`int NOT NULL,`result` varchar(32) NOT NULL,`date` date NOT NULL
);
-- 插入数据:
INSERT INTO question_practice_detail VALUES(1,2138,111,'wrong','2021-05-03');
INSERT INTO question_practice_detail VALUES(2,3214,112,'wrong','2021-05-09');
INSERT INTO question_practice_detail VALUES(3,3214,113,'wrong','2021-06-15');
INSERT INTO question_practice_detail VALUES(4,6543,111,'right','2021-08-13');
INSERT INTO question_practice_detail VALUES(5,2315,115,'right','2021-08-13');
INSERT INTO question_practice_detail VALUES(6,2315,116,'right','2021-08-14');
INSERT INTO question_practice_detail VALUES(7,2315,117,'wrong','2021-08-15');
INSERT INTO question_practice_detail VALUES(8,3214,112,'wrong','2021-05-09');
INSERT INTO question_practice_detail VALUES(9,3214,113,'wrong','2021-08-15');
INSERT INTO question_practice_detail VALUES(10,6543,111,'right','2021-08-13');
INSERT INTO question_practice_detail VALUES(11,2315,115,'right','2021-08-13');
INSERT INTO question_practice_detail VALUES(12,2315,116,'right','2021-08-14');
INSERT INTO question_practice_detail VALUES(13,2315,117,'wrong','2021-08-15');
INSERT INTO question_practice_detail VALUES(14,3214,112,'wrong','2021-08-16');
INSERT INTO question_practice_detail VALUES(15,3214,113,'wrong','2021-08-18');
INSERT INTO question_practice_detail VALUES(16,6543,111,'right','2021-08-13');
-- 输出:
avg_ret
0.3000
-- 方法一:
SELECTCOUNT(DISTINCT t2.device_id, t2.date) / COUNT(DISTINCT t1.device_id, t1.date) AS avg_ret 
FROMquestion_practice_detail AS t1
LEFT JOIN question_practice_detail AS t2
ON t1.device_id = t2.device_idAND DATEDIFF(t2.date, t1.date) = 1;

 【解题思路】
1)用 datediff 区分第一天和第二天在线的 device_id
2)用 left join 做自表联结
3)用 distinct t2.device_id, t2.date 做双重去重,找到符合条件的当天在线人数

-- 方法二:
SELECT(t1.num / t2.num) AS avg_ret
FROM( -- 计算第二天再来的记录数量SELECTCOUNT(DISTINCT a.device_id, a.date) AS numFROMquestion_practice_detail aINNER JOIN question_practice_detail b ON a.device_id = b.device_idAND a.date = DATE_ADD(b.date, INTERVAL 1 DAY)) t1,( -- 计算总记录数量SELECTCOUNT(DISTINCT device_id, date) AS numFROMquestion_practice_detail) t2;

【解题思路】
留存率=(去重后的用户有连续两天刷题记录次数)/(去重日期用户后刷题记录次数)
1)计算第二天再来的记录数量 (t1)
使用自连接查找在某一日期出现的设备 ID,且该设备 ID 在前一天也有记录,计算这些设备 ID 和日期组合的唯一数量。
2)计算总记录数量 (t2)
计算 question_practice_detail 表中所有唯一的设备 ID 和日期组合数量。
3)最终计算
将 t1 的结果(第二天再来的设备数量)除以 t2 的结果(总的设备和日期组合数量),得到平均值 avg_ret。

【总结】

1)COUNT()函数

COUNT()函数是一个聚合函数,用于计算表中行的数量或特定列的非空值数量。
COUNT(*) 计算表中的所有行,包括 NULL 值
COUNT(column_name) 只计算该列中的 非NULL 值
COUNT(DISTINCT column_name) 计算该列中 唯一且 非NULL 的值,即该列的不同值的数目
count(distinct a.device_id, a.date) as num
计算在 question_practice_detail 表中不同设备(device_id)和日期(date)组合的数量。

2)日期加减函数

DATE_SUB(date, interval 1 day) 从给定的 date 中减去指定的时间间隔
DATE_ADD(date, interval -1 day) 向给定的 date 中加上指定的时间间隔(加上-1天,即减去1天)
DATEDIFF(date2, date1) = 1 返回 date2 - date1 之间的天数差(天数差1天)

示例
DATE_SUB('2025-03-10', interval 1 day) 将返回 '2025-03-09'。
DATE_ADD('2025-03-10', interval -1 day) 也将返回 '2025-03-09'。
DATEDIFF('2025-03-10', '2025-03-09') 将返回 1,表示两天之间相差1天。

【参考文献】
1、https://blog.csdn.net/zhanchulan/article/details/140047896
2、https://blog.csdn.net/qq_43543789/article/details/142854428
3、https://blog.csdn.net/2301_76352996/article/details/142143839

【附录】

原本日期

减1后日期
date_sub(date, interval 1 day)

left join 后情况(表关联后计数注意NULL值)

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

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

相关文章

深度学习分类回归(衣帽数据集)

一、步骤 1 加载数据集fashion_minst 2 搭建class NeuralNetwork模型 3 设置损失函数,优化器 4 编写评估函数 5 编写训练函数 6 开始训练 7 绘制损失,准确率曲线 二、代码 导包,打印版本号: import matplotlib as mpl im…

Midjourney绘图参数详解:从基础到高级的全面指南

引言 Midjourney作为当前最受欢迎的AI绘图工具之一,其强大的参数系统为用户提供了丰富的创作可能性。本文将深入解析Midjourney的各项参数,帮助开发者更好地掌握这一工具,提升创作效率和质量。 一、基本参数配置 1. 图像比例调整 使用--ar…

音频进阶学习十九——逆系统(简单进行回声消除)

文章目录 前言一、可逆系统1.定义2.解卷积3.逆系统恢复原始信号过程4.逆系统与原系统的零极点关系 二、使用逆系统去除回声获取原信号的频谱原系统和逆系统幅频响应和相频响应使用逆系统恢复原始信号整体代码如下 总结 前言 在上一篇音频进阶学习十八——幅频响应相同系统、全…

vue3 使用sass变量

1. 在<style>中使用scss定义的变量和css变量 1. 在/style/variables.scss文件中定义scss变量 // scss变量 $menuText: #bfcbd9; $menuActiveText: #409eff; $menuBg: #304156; // css变量 :root {--el-menu-active-color: $menuActiveText; // 活动菜单项的文本颜色--el…

gbase8s rss集群通信流程

什么是rss RSS是一种将数据从主服务器复制到备服务器的方法 实例级别的复制 (所有启用日志记录功能的数据库) 基于逻辑日志的复制技术&#xff0c;需要传输大量的逻辑日志,数据库需启用日志模式 通过网络持续将数据复制到备节点 如果主服务器发生故障&#xff0c;那么备用服务…

熵与交叉熵详解

前言 本文隶属于专栏《机器学习数学通关指南》&#xff0c;该专栏为笔者原创&#xff0c;引用请注明来源&#xff0c;不足和错误之处请在评论区帮忙指出&#xff0c;谢谢&#xff01; 本专栏目录结构和参考文献请见《机器学习数学通关指南》 ima 知识库 知识库广场搜索&#…

探索在生成扩散模型中基于RAG增强生成的实现与未来

概述 像 Stable Diffusion、Flux 这样的生成扩散模型&#xff0c;以及 Hunyuan 等视频模型&#xff0c;都依赖于在单一、资源密集型的训练过程中通过固定数据集获取的知识。任何在训练之后引入的概念——被称为 知识截止——除非通过 微调 或外部适应技术&#xff08;如 低秩适…

DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)之添加列宽调整功能,示例Table14基础固定表头示例

前言&#xff1a;哈喽&#xff0c;大家好&#xff0c;今天给大家分享一篇文章&#xff01;并提供具体代码帮助大家深入理解&#xff0c;彻底掌握&#xff01;创作不易&#xff0c;如果能帮助到大家或者给大家一些灵感和启发&#xff0c;欢迎收藏关注哦 &#x1f495; 目录 Deep…

论文阅读分享——UMDF(AAAI-24)

概述 题目&#xff1a;A Unified Self-Distillation Framework for Multimodal Sentiment Analysis with Uncertain Missing Modalities 发表&#xff1a;The Thirty-Eighth AAAI Conference on Artificial Intelligence (AAAI-24) 年份&#xff1a;2024 Github&#xff1a;暂…

【报错】微信小程序预览报错”60001“

1.问题描述 我在微信开发者工具写小程序时&#xff0c;使用http://localhost:8080是可以请求成功的&#xff0c;数据全都可以无报错&#xff0c;但是点击【预览】&#xff0c;用手机扫描二维码浏览时&#xff0c;发现前端图片无返回且报错60001&#xff08;打开开发者模式查看日…

栅格裁剪(Python)

在地理数据处理中&#xff0c;矢量裁剪栅格是一个非常重要的操作&#xff0c;它可以帮助我们提取感兴趣的区域并获得更精确的分析结果。其重要性包括&#xff1a; 区域限定&#xff1a;地球科学研究通常需要关注特定的地理区域。通过矢量裁剪栅格&#xff0c;我们可以将栅格数…

【无人机路径规划】基于麻雀搜索算法(SSA)的无人机路径规划(Matlab)

效果一览 代码获取私信博主基于麻雀搜索算法&#xff08;SSA&#xff09;的无人机路径规划&#xff08;Matlab&#xff09; 一、算法背景与核心思想 麻雀搜索算法&#xff08;Sparrow Search Algorithm, SSA&#xff09;是一种受麻雀群体觅食行为启发的元启发式算法&#xff0…

MySQL数据库安装及基础用法

安装数据库 第一步&#xff1a;下载并解压mysql-8.4.3-winx64文件夹 链接: https://pan.baidu.com/s/1lD6XNNSMhPF29I2_HBAvXw?pwd8888 提取码: 8888 第二步&#xff1a;打开文件中的my.ini文件 [mysqld]# 设置3306端口port3306# 自定义设置mysql的安装目录&#xff0c;即解…

正则表达式,idea,插件anyrule

​​​​package lx;import java.util.regex.Pattern;public class lxx {public static void main(String[] args) {//正则表达式//写一个电话号码的正则表达式String regex "1[3-9]\\d{9}";//第一个数字是1&#xff0c;第二个数字是3-9&#xff0c;后面跟着9个数字…

RISC-V医疗芯片工程师复合型转型的路径与策略

从RISC-V到医疗芯片:工程师复合型转型的路径与策略 一、引言 1.1 研究背景 在科技快速发展的当下,芯片技术已然成为推动各行业进步的核心驱动力之一。其中,RISC-V 架构作为芯片领域的新兴力量,正以其独特的优势迅速崛起,对整个芯片产业的格局产生着深远影响。RISC-V 架…

【设计模式】掌握建造者模式:如何优雅地解决复杂对象创建难题?

概述 将一个复杂对象的构建与表示分离&#xff0c;使得同样的构建过程可以创建不同的表示。 分离了部件的构造(由Builder来负责)和装配(由Director负责)。 从而可以构造出复杂的对象。这个模式适用于&#xff1a;某个对象的构建过程复杂的情况。 由于实现了构建和装配的解耦。…

【Java代码审计 | 第八篇】文件操作漏洞成因及防范

未经许可&#xff0c;不得转载。 文章目录 文件操作漏洞文件读取漏洞基于 InputStream 的读取基于 FileReader 的读取 文件下载漏洞文件删除漏洞防范 文件操作漏洞 分为文件读取漏洞、文件下载漏洞与文件删除漏洞。 文件读取漏洞 在Java中&#xff0c;文件读取通常有两种常见…

【论文解读】MODEST 透明物体 单目深度估计和分割 ICRA 2025

MODEST是一种用于透明物体的单目深度估计和分割的方法&#xff0c;来自ICRA 2025。 它通过单张RGB图像作为输入&#xff0c;能够同时预测透明物体的深度图和分割掩码。 由深度图生成点云数据&#xff0c;然后采用GraspNet生成抓取位姿&#xff0c;开展透明物体抓取实验。 论文…

【网络安全工程】任务11:路由器配置与静态路由配置

目录 一、概念 二、路由器配置 三、配置静态路由CSDN 原创主页&#xff1a;不羁https://blog.csdn.net/2303_76492156?typeblog 一、概念 1、路由器的作用&#xff1a;通过路由表进行数据的转发。 2、交换机的作用&#xff1a;通过学习和识别 MAC 地址&#xff0c;依据 M…

深入理解隐式类型转换:从原理到应用

C⽀持内置类型隐式类型转换为类类型对象&#xff0c;需要有相关内置类型为参数的构造函数。 构造函数前⾯加explicit就不再⽀持隐式类型转换。 类类型的对象之间也可以隐式转换&#xff0c;需要相应的构造函数⽀持。 内置类型隐式类型转换为类类型对象 在 C 中&#xff0c;如果…