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

做网站项目前怎么收集需求做设计网站的工作怎么样的

做网站项目前怎么收集需求,做设计网站的工作怎么样的,建站公司郑州,建设企业功能网站一、问题拆解:理解次日留存率的计算逻辑 1.1 业务需求转换 题目:运营希望查看用户在某天刷题后第二天还会再来刷题的留存率。 关键分析点: 留存率 (第一天刷题且第二天再次刷题的用户数) / 第一天刷题的总用户数需…

一、问题拆解:理解次日留存率的计算逻辑

1.1 业务需求转换

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

关键分析点

  • 留存率 = (第一天刷题且第二天再次刷题的用户数) / 第一天刷题的总用户数
  • 需要关联同一用户的连续两天行为
  • 结果要求不去重(保留所有可能的留存行为)

1.2 数据模型假设

假设我们有用户刷题记录表question_practice_detail,包含:

  • device_id:用户设备ID(唯一标识用户)
  • date:刷题日期
  • 其他字段:题目ID、答题结果等(与本次计算无关)

二、核心SQL解析:自连接实现留存关联

2.1 完整SQL语句

SELECT COUNT(DISTINCT q2.device_id, q2.date) / COUNT(DISTINCT q1.device_id, q1.date) AS avg_ret
FROM question_practice_detail AS q1 
LEFT JOIN question_practice_detail AS q2 
ON q1.device_id = q2.device_id AND DATEDIFF(q2.date, q1.date) = 1;

2.2 自连接设计原理

表别名技术

  • q1:作为主表,表示"第一天刷题记录"
  • q2:作为关联表,表示"第二天刷题记录"

连接条件解析

  1. q1.device_id = q2.device_id:确保关联同一用户的记录
  2. DATEDIFF(q2.date, q1.date) = 1:确保q2的日期比q1晚一天

左连接的意义

  • 即使某用户在次日没有刷题记录(q2为NULL),q1的记录仍会被保留
  • 这保证了分母(所有第一天刷题用户)的完整性

三、COUNT(DISTINCT …) 多字段去重详解

3.1 多字段去重的内在逻辑

COUNT(DISTINCT q2.device_id, q2.date)

执行步骤

  1. 组合键生成:将device_iddate组合成复合键(如1001-2023-01-02
  2. 哈希去重:数据库内部使用哈希表对组合键进行去重
  3. 计数统计:统计去重后的组合键数量

与单字段去重的区别

表达式统计逻辑
COUNT(DISTINCT device_id)统计不同用户的数量
COUNT(DISTINCT date)统计不同日期的数量
COUNT(DISTINCT device_id, date)统计不同用户+日期的组合数量

3.2 分子与分母的统计逻辑

分子COUNT(DISTINCT q2.device_id, q2.date)

  • 统计有次日刷题记录的(用户ID, 日期)组合数
  • 确保每个用户每天只被统计一次

分母COUNT(DISTINCT q1.device_id, q1.date)

  • 统计所有第一天刷题的(用户ID, 日期)组合数
  • 覆盖所有可能产生留存的基础用户

四、执行流程与数据流转

4.1 示例数据与连接过程

假设我们有以下数据:

q1表(第一天刷题记录)

device_iddate
10012023-01-01
10022023-01-01
10032023-01-01

q2表(第二天刷题记录)

device_iddate
10012023-01-02
10012023-01-02

自连接结果

q1.device_idq1.dateq2.device_idq2.date
10012023-01-0110012023-01-02
10022023-01-01NULLNULL
10032023-01-01NULLNULL

4.2 统计过程详解

  1. 分子计算

    • COUNT(DISTINCT q2.device_id, q2.date) = 1
    • 去重后只有(1001, 2023-01-02)这一个有效组合
  2. 分母计算

    • COUNT(DISTINCT q1.device_id, q1.date) = 3
    • 包含(1001, 2023-01-01)(1002, 2023-01-01)(1003, 2023-01-01)
  3. 结果

    • 次日留存率 = 1/3 ≈ 33.33%

五、性能优化策略

5.1 复合索引设计

-- 创建覆盖索引,同时加速连接和去重
CREATE INDEX idx_device_date ON question_practice_detail(device_id, date);

索引优化原理

  • 支持device_id的等值查询
  • 支持date的范围查询(DATEDIFF本质是日期比较)
  • 覆盖索引避免回表,直接在索引中完成统计

5.2 执行计划分析

使用EXPLAIN关键字分析SQL执行计划:

EXPLAIN
SELECT ... (SQL) ...;

关键指标解读

  • type列:理想情况为refrange,避免ALL(全表扫描)
  • key列:应显示使用了idx_device_date索引
  • Extra列:避免出现Using temporaryUsing filesort

六、常见问题与解决方案

6.1 NULL值处理

-- 假设存在device_id=NULL的记录
COUNT(DISTINCT device_id, date)  -- 会忽略这些记录-- 如需包含NULL,需手动转换
COUNT(DISTINCT COALESCE(device_id, 0), date)

6.2 分母为零处理

当某天没有用户刷题时,直接计算会导致除零错误:

SELECT IFNULL(COUNT(DISTINCT q2.device_id, q2.date) / NULLIF(COUNT(DISTINCT q1.device_id, q1.date), 0), 0) AS avg_ret
FROM ...

6.3 时间窗口扩展

计算3日留存率:

SELECT COUNT(DISTINCT q3.device_id) / COUNT(DISTINCT q1.device_id) AS retention_3day
FROM question_practice_detail AS q1 
LEFT JOIN question_practice_detail AS q3 
ON q1.device_id = q3.device_id AND DATEDIFF(q3.date, q1.date) = 3;

七、总结与技术要点

7.1 核心技术点回顾

  1. 自连接技术:通过表别名实现同一表的不同时间关联
  2. COUNT(DISTINCT):多字段组合去重统计的关键
  3. LEFT JOIN:确保分母统计的完整性,包含所有可能留存的用户
  4. 索引优化:复合索引显著提升大数据量下的查询性能

7.2 技术决策树

开始
│
├── 是否需要统计用户行为留存率?
│   │
│   └── 是 → 是否需要多日留存?
│       │
│       ├── 是 → 使用DATEDIFF调整时间窗口
│       │
│       └── 否 → 是否需要去重?
│           │
│           ├── 是 → 使用COUNT(DISTINCT ...)
│           │
│           └── 否 → 直接使用COUNT
│
├── 是否存在性能问题?
│   │
│   └── 是 → 创建复合索引(用户ID, 日期)
│
└── 结束

通过深入理解自连接和多字段去重的原理,结合索引优化技术,我们可以高效、准确地计算各种时间窗口的用户留存率。


文章转载自:

http://XAbtgyX1.yrctp.cn
http://4K09at08.yrctp.cn
http://glm5nmnU.yrctp.cn
http://6xK84gwn.yrctp.cn
http://hWI3I3bR.yrctp.cn
http://HeQPomD9.yrctp.cn
http://jxDQCXDD.yrctp.cn
http://IoAn4iN5.yrctp.cn
http://S7eRMFat.yrctp.cn
http://Z1B2fjfA.yrctp.cn
http://HaFKPRsD.yrctp.cn
http://R9uQQ3gt.yrctp.cn
http://Rynujq0I.yrctp.cn
http://XTmTJpyN.yrctp.cn
http://0pa0yAEk.yrctp.cn
http://Jjqz4GXm.yrctp.cn
http://D7XqXeTX.yrctp.cn
http://AFlB8Fwt.yrctp.cn
http://EmOR4pPp.yrctp.cn
http://bOM2dfg8.yrctp.cn
http://XGc5SqrV.yrctp.cn
http://tV75pvjj.yrctp.cn
http://FOgzYIMu.yrctp.cn
http://070S7Rql.yrctp.cn
http://4ZkQW7Dl.yrctp.cn
http://wzZTzsYx.yrctp.cn
http://w2nVQN53.yrctp.cn
http://EkPuBvTM.yrctp.cn
http://BTB0Yc8j.yrctp.cn
http://Byas4aDB.yrctp.cn
http://www.dtcms.com/wzjs/670864.html

相关文章:

  • 做购物网站安全吗一份优秀的网络推广方案
  • 上海网站建设招聘国外服装设计师网站
  • 建设简单企业网站企业网站案例公司
  • 果洛wap网站建设哪家好可以自己做论坛网站吗
  • 无锡网站开发公司电话wordpress doc插件
  • 电商网站优缺点成都口碑最好的家装公司
  • 中山网站制作费用做安卓开发要去看哪些网站
  • 个人网站建设价格表零基础学it哪个专业好
  • 促销型网站公司邮箱手机怎么登录
  • php网站建设案例教程做网站几百块可信吗
  • 杨凌住房和城乡建设局网站wordpress linux 伪静态
  • 百度推广 做网站山楂树建站公司
  • 北京网站开发教师招聘如何用 python 做网站
  • 深圳住房和建设局网站网上预约巩义网站网站建设
  • 免费网站建站工具网站建设行业细分
  • 昆明做凡科网站深圳快速网站制作哪家公司好
  • 建设用地规划许可证在哪个网站查询那个公司做网站好
  • 苍南网站建设公司长沙网络推广营销
  • 设计本官方网站 网络服务跨国购物网站建设费用
  • 网站开发合作意向协议书肃宁哪里建网站
  • 手机号码定位网站开发html好看的网站
  • 网站维护怎么样广州腾虎网络科技有限公司
  • 建设网站前的市场分析主要包括哪些内容网站导入链接
  • 互联网网站如何做流量统计浏览器免费下载
  • 用asp做网站需要什么软件dedecms 漏洞
  • 南宁网站建设方案报价怎么用自助网站
  • 摄影网站功能设计联盟网站做任务
  • 公司网站放哪些内容江西省最新新闻
  • 宁波高端网站建设联系方式重庆网站建设 cqhtwl
  • 搜索引擎优化包括( )方面的优化seo优化推广多少钱