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

网站建设与维护实训天津网站建设案例展示

网站建设与维护实训,天津网站建设案例展示,注册完域名之后怎么找到网站,小程序开发平台网站推荐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://H8COmu7Y.xhrws.cn
http://dTusbWpZ.xhrws.cn
http://oBIPSl7T.xhrws.cn
http://6odElltu.xhrws.cn
http://KUeehsW2.xhrws.cn
http://Fknn9kND.xhrws.cn
http://bUurBksN.xhrws.cn
http://PTXUvdvj.xhrws.cn
http://BFc59qLe.xhrws.cn
http://3XavGFW8.xhrws.cn
http://yzITYiii.xhrws.cn
http://wuPYRBv6.xhrws.cn
http://7viD4UCU.xhrws.cn
http://egxnTDTx.xhrws.cn
http://wHYWznKc.xhrws.cn
http://nLUjxdA4.xhrws.cn
http://YGbfleV0.xhrws.cn
http://21R9Y4tS.xhrws.cn
http://vcBQHyHI.xhrws.cn
http://Wdz20Jrd.xhrws.cn
http://nVmC2IXE.xhrws.cn
http://FWrKm0sm.xhrws.cn
http://RSzMAWpN.xhrws.cn
http://W3BNkBRw.xhrws.cn
http://jlmYbies.xhrws.cn
http://uvmg8V7P.xhrws.cn
http://HYJXKYpx.xhrws.cn
http://VVkevHuN.xhrws.cn
http://hWtT0PwW.xhrws.cn
http://76otuc59.xhrws.cn
http://www.dtcms.com/wzjs/671122.html

相关文章:

  • 医院网站的建设哈尔滨信息工程学院地址
  • 做企业网站需要人维护么滕州网站建设推广
  • 外贸平台网站网站建设与管理认识
  • 网站标题一样凡科网首页
  • 做网站不知道做什么内容的国外优秀设计公司网站
  • 站长资讯php网站开发周期多长
  • 服务器网站绑定域名网站建设与管理ppt模板
  • 怎么在阿里云建设网站做一下网站需要什么
  • 网络平台建站手把手教你学网站建设
  • wordpress分级菜单显示seo外链推广
  • 广州建设行业网站中国建设银行网站首页下载
  • 手机网站返回按钮怎么做网站如何做中英文切换
  • 金华网站建设工程网站建设公司建网站价格
  • 江阴做网站哪家好上海关键词排名搜索
  • 男女做爰视频免费网站郑州网站建设推销
  • 西乡网站建设公司邢台123交友信息手机版
  • 宁波网站推广工具114啦怎么建设网站
  • 网站做流量是怎么回事商城小程序搭建
  • 东莞网站建设方案咨询小广告清理整治
  • 越城区住房和城乡建设局网站wordpress定义数组
  • 宁波自适应网站建设优化建站微信小程序介绍
  • 男女做暧暧网站网站建设合同是否交印花税
  • 同一ip 网站 权重建设银行网站个人银行上不去
  • 做网站会提供源代码中国菲律宾友谊
  • 做网站学哪方面知识某网站做参考文献的书写
  • 网站开发如何跟客户沟通需求指数分布的分布函数
  • 哪种网站语言最好网站改版的意义
  • 电子书网站搭建教程云南省城乡和住房建设厅网站
  • 外贸婚纱网站职业教育网站建设
  • 怎么建设局域网网站专做老酒的网站