当前位置: 首页 > news >正文

牛客SQL29详解 计算用户的平均次日留存率

牛客SQL29详解 计算用户的平均次日留存率

  • 牛客SQL29详解 计算用户的平均次日留存率

叮嘟!这里是小啊呜的学习课程资料整理。好记性不如烂笔头,今天也是努力进步的一天。一起加油进阶吧!
在这里插入图片描述

牛客SQL29详解 计算用户的平均次日留存率

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

在这里插入图片描述

解题总体逻辑:概率=(去重后的用户有连续两天刷题记录次数)/(去重日期用户后刷题记录次数)1、计算第二天再来的记录数量 (t1):
使用自连接查找在某一日期出现的设备 ID,且该设备 ID 在前一天也有记录。
计算这些设备 ID 和日期组合的唯一数量。2、计算总记录数量 (t2):
计算 question_practice_detail 表中所有唯一的设备 ID 和日期组合数量。3、最终计算:
将 t1 的结果(第二天再来的设备数量)除以 t2 的结果(总的设备和日期组合数量),得到平均值 avg_ret。使用场景:
分析用户的回访情况,即有多少设备在某一天后又回来了。
计算这些设备的比例来评估用户的留存情况。
题解:select(t1.num / t2.num) as avg_ret
from( -- 计算第二天再来的记录数量selectcount(distinct a.device_id,a.date) as numfromquestion_practice_detail aleft join question_practice_detail b on a.device_id = b.device_idand a.date = date_add(b.date, interval -1 day)whereb.device_id is not null) t1,( -- 计算总记录数量selectcount(distinct device_id, date) as numfromquestion_practice_detail) t2;
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)组合的数量。
这里的 num 是计算的结果,即第二天再来的记录数量。
left join question_practice_detail b on a.device_id = b.device_id
进行自连接,将表 a 与表 b 连接。
条件是 a.device_id 等于 b.device_id,并且 a.date 等于 b.date 的前一天。也就是说,它在查找那些在某一天(a.date)再次出现的设备 ID(device_id)。
whereb.device_id is not null
行过滤条件:
确保只有那些在表 b 中有匹配记录的 a 记录被计算。
这意味着设备在前一天确实存在过。

Ending!
更多课程知识学习记录随后再来吧!

就酱,嘎啦!

在这里插入图片描述

注:
人生在勤,不索何获。

http://www.lryc.cn/news/462190.html

相关文章:

  • Redis --- 第四讲 --- 常用数据结构 --- 其他类型stream、bitmap……。补充内容scan命令。
  • Java多线程--实现跑马小游戏
  • 扫雷(C 语言)
  • 有源滤波器(一)
  • Flume面试整理-常见的Channel类型
  • 【前端】如何制作一个自己的网页(6)
  • Linux系统性能调优技巧
  • 数学建模算法与应用 第5章 插值与拟合方法
  • 3D Slicer 教程二 ---- 数据集
  • 【建议收藏】30个Java异常的知识点,你能撑到第几个?
  • 【Linux系统编程】环境基础开发工具使用
  • 滚雪球学Redis[6.2讲]:Redis脚本与Lua:深入掌握Redis中的高效编程技巧
  • 上市不到一月,极氪7X交付破万台!论纯电,极氪真“遥遥领先”
  • 【Linux】理解文件系统与软硬链接,观察inode号理解<“软链接是包含路径的新文件“,“硬链接是关于文件名的机制“>,最终明白<什么是真正删除一个文件>
  • Java高并发控制之按业务对象加同步锁
  • Python魔法函数__iter__的用法
  • Redis-缓存一致性
  • SAP学习笔记 - 豆知识13 - Msg 番号 NR751 - Object RF_BELEG R100、番号範囲間隔 49 不存在 FBN1
  • 美摄科技云服务解决方案,方案成熟,接入简单
  • 【bug】paddleocr draw_ocr_box_txt ValueError: incorrect coordinate type
  • python的多线程和多进程
  • 基于SpringBoot+Vue+uniapp的时间管理小程序的详细设计和实现(源码+lw+部署文档+讲解等)
  • HMAC-MD5参数签名算法
  • 【word】文章里的表格边框是双杠
  • 我常用的两个单例模式写法 (继承Mono和不继承Mono的)
  • Android 自定义Toast显示View
  • SCRM呼叫中心高保真Axure原型 源文件分享
  • Ubuntu(Linux)tcpdump使用方法详解
  • Centos安装Nginx 非Docker
  • 免费版的音频剪辑软件:这四款有没有你的菜?