Mysql查询用户留存/留存率问题--用户n日(内)留存、某日新增用户n日(内)留存

本文提供Mysql查询语句,用于计算用户及新增用户的n日留存率与n日内留存率,包括次日、3日、7日等关键时间节点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

来源:数据运营与数据分析

Mysql查询用户留存/留存率语法

  • 计算某日的客户在第n日再次出现的概率--用户n日留存率。

  • 计算某日的客户在某个时间段内再次出现的概率--用户n日内留存率。

  • 计算某日新增的用户在第n日再次出现的概率--新用户n日留存率。

  • 计算某日新增的用户在某个时间段内再次出现的概率--新用户n日内留存率。

1.用户n日留存/留存率

计算某日的客户在第n日再次出现的概率--用户n日留存率。

  • 表名:订单总表;字段:客户编号,下单时间

-- 1.用户n日留存/留存率
-- 用户次日、3日、7日、30日,...留存/留存率

select *,
 concat(round(100*次日留存用户/日活跃用户数,2),'%')  次日留存率,
 concat(round(100*三日留存用户/日活跃用户数,2),'%')  三日留存率,
 concat(round(100*七日留存用户/日活跃用户数,2),'%')  七日留存率
from (
 select 
  date(a.下单时间) as 日期,
  count(distinct a.客户编号) as 日活跃用户数,
  count(distinct b.客户编号) as 次日留存用户,
  count(distinct c.客户编号) as 三日留存用户,
  count(distinct d.客户编号) as 七日留存用户
 from 订单总表 a 
  left join 订单总表 b 
   on a.客户编号 = b.客户编号 
   and date(b.下单时间) = date(a.下单时间) + 1
  left join 订单总表 c 
   on a.客户编号 = c.客户编号 
   and date(c.下单时间) = date(a.下单时间) + 3
  left join 订单总表 d 
   on a.客户编号 = d.客户编号 
   and date(d.下单时间) = date(a.下单时间) + 7
 where date(a.下单时间) between "2020/09/01" and "2020/09/05" 
 group by date(a.下单时间)
) p;

2.用户n日内留存/留存率

计算某日的客户在某个时间段内再次出现的概率--用户n日内留存率。

-- 2.用户n日内留存/留存率
-- 用户次日内、3日内、7日内、30日内,...留存/留存率

select *,
 concat(round(100*次日内留存用户/日活跃用户数,2),'%')  次日内留存率,
 concat(round(100*三日内留存用户/日活跃用户数,2),'%')  三日内留存率,
 concat(round(100*七日内留存用户/日活跃用户数,2),'%')  七日内留存率
from (
 select 
  date(a.下单时间) as 日期,
  count(distinct a.客户编号) as 日活跃用户数,
  count(distinct b.客户编号) as 次日内留存用户,
  count(distinct c.客户编号) as 三日内留存用户,
  count(distinct d.客户编号) as 七日内留存用户
 from 订单总表 a 
  left join 订单总表 b 
   on a.客户编号 = b.客户编号 
   and date(b.下单时间) = date(a.下单时间) + 1
  left join 订单总表 c 
   on a.客户编号 = c.客户编号 
   and (date(c.下单时间) BETWEEN date(a.下单时间) + 1 AND date(a.下单时间) + 3)
  left join 订单总表 d 
   on a.客户编号 = d.客户编号 
   and (date(d.下单时间) BETWEEN date(a.下单时间) + 1 AND date(a.下单时间) + 7)
 where date(a.下单时间) between "2020/09/01" and "2020/09/05" 
 group by date(a.下单时间)
) p;

3.新增用户n日留存/留存率

计算某日新增的用户在第n日再次出现的概率--新用户n日留存率。

## 3.某日新增用户留存/留存率
## 计算某日新增的用户在次日、3日、7日的留存率--新用户n日留存

select *,
 concat(round(100*次日留存用户/日新增用户数,2),'%')  次日留存率,
 concat(round(100*三日留存用户/日新增用户数,2),'%')  三日留存率,
 concat(round(100*七日留存用户/日新增用户数,2),'%')  七日留存率
from (
 select 
  date(a.下单时间) as 新增日期,
  count(distinct a.客户编号) as 日新增用户数,
  count(distinct b.客户编号) as 次日留存用户,
  count(distinct c.客户编号) as 三日留存用户,
  count(distinct d.客户编号) as 七日留存用户
 from 
 (
  select  
   date(t1.下单时间) as 下单时间,
   t1.客户编号 
  from 订单总表 as t1
   left join 订单总表 as t2
   on t1.客户编号=t2.客户编号
   and t2.下单时间<t1.下单时间
  where 
   (date(t1.下单时间) between "2020/09/01" and "2020/09/05") 
  and t2.下单时间 is Null  
 ) as a 
  left join 订单总表 b 
   on a.客户编号 = b.客户编号 
   and date(b.下单时间) = date(a.下单时间) + 1
  left join 订单总表 c 
   on a.客户编号 = c.客户编号 
   and date(c.下单时间) = date(a.下单时间) + 3
  left join 订单总表 d 
   on a.客户编号 = d.客户编号 
   and date(d.下单时间) = date(a.下单时间) + 7
 group by date(a.下单时间)
) p;

4.新增用户n日内留存率

计算某日新增的用户在次日内、3日内、7日内的留存率--新用户n日内留存率。

## 4.新增用户n日内留存率
## 计算某日新增的用户在次日内、3日内、7日内的留存率--新用户n日内留存率。
select *,
 concat(round(100*次日留存用户/日新增用户数,2),'%')  次日留存率,
 concat(round(100*三日留存用户/日新增用户数,2),'%')  三日留存率,
 concat(round(100*七日留存用户/日新增用户数,2),'%')  七日留存率
from (
 select 
  date(a.下单时间) as 新增日期,
  count(distinct a.客户编号) as 日新增用户数,
  count(distinct b.客户编号) as 次日留存用户,
  count(distinct c.客户编号) as 三日留存用户,
  count(distinct d.客户编号) as 七日留存用户
 from 
 (
  select  
   date(t1.下单时间) as 下单时间,
   t1.客户编号 
  from 订单总表 as t1
   left join 订单总表 as t2
   on t1.客户编号=t2.客户编号
   and t2.下单时间<t1.下单时间
  where 
   (date(t1.下单时间) between "2020/09/01" and "2020/09/05") 
  and t2.下单时间 is Null  
 ) as a 
  left join 订单总表 b 
   on a.客户编号 = b.客户编号 
   and date(b.下单时间) = date(a.下单时间) + 1
  left join 订单总表 c 
   on a.客户编号 = c.客户编号 
   and (date(c.下单时间) BETWEEN date(a.下单时间) + 1 AND date(a.下单时间) + 3)
  left join 订单总表 d 
   on a.客户编号 = d.客户编号 
   and (date(d.下单时间) BETWEEN date(a.下单时间) + 1 AND date(a.下单时间) + 7)
 group by date(a.下单时间)
) p;

<think>好的,我现在需要处理用户关于商业数据分析面试题目的请求。首先,用户希望得到与商业数据分析、商业智能(BI)相关的面试题目、案例分析以及题库。我需要结合提供的引用内容来生成相关内容,并确保符合系统级指令的要求,比如正确使用LaTeX格式和添加引用标识。 首先,查看用户提供的引用内容。引用[1]提到数据科学、数据工程和数据分析师的面试问题,涵盖Power BI、Tableau、MySQL、Python、Excel等工具,以及实战案例。引用[2]特别提到Excel、SQL、Python的面试必备技巧。引用[3]提供了一个Quick BI的案例分析,说明如何通过数据整合和决策优化业务流程。引用[4]则涉及数据治理项目,包括数据质量管理、元数据管理等内容。 接下来,我需要将这些内容整合到用户问题中。用户需要的是商业数据分析相关的面试题目,这可能包括理论题、技术题、案例分析以及数据治理等方面的问题。因此,我需要分类整理,确保覆盖用户提到的各个领域。 首先,理论题部分需要涵盖统计学基础、业务理解、数据可视化等。例如,A/B测试的统计方法、数据指标的选择、异动分析的方法论等。同时,结合引用[1]中的内容,可能需要包括数据科学的基础知识,比如假设检验、指标定义等。 技术题方面,根据引用[1]和[2],需要包括SQL、Python、Excel、Power BI、Tableau等工具的题目。例如,SQL中的窗口函数、Python的数据处理库如Pandas的使用、Excel的数据透视表等。这些题目需要具体的问题和示例代码,比如写出计算留存率的SQL查询,或者使用Python处理缺失值的方法。 案例分析题部分,引用[3]中的Quick BI案例可以作为一个例子,说明如何通过数据分析优化流程。此外,用户可能还需要其他类型的案例分析,如销售下降分析、用户流失预测等。这部分需要结合业务场景,考察候选人的分析思路和解决问题的能力。 数据治理方面,引用[4]提到数据质量管理、元数据管理、主数据管理等,这部分需要设计相关问题,比如如何处理数据不一致,如何设计元数据存储库等。这些问题考察候选人对数据治理流程的理解和实践经验。 在生成问题的时候,要确保结构清晰,分类明确,每个问题后添加相关的引用标识。例如,理论题可以引用[1]、[2],技术题引用[1]、[2],案例分析引用[3],数据治理引用[4]。 同时,需要注意系统级指令中的格式要求,所有行内数学表达式使用$...$,独立公式使用$$...$$。例如,在涉及统计公式时,正确使用LaTeX,比如假设检验中的p值计算,或回归模型中的公式。 最后,生成的相关问题需要符合用户的需求,覆盖商业数据分析的各个方面,并且每个问题后自然添加引用来源。确保回答真实可靠,结构清晰,帮助用户逐步解决问题。</think>### 商业数据分析面试题目与案例分析 #### 一、理论类问题 1. **A/B测试的统计基础** - 如何设计A/B测试的样本量?解释$p$值的含义及如何判断结果显著性[^1] - 若实验组转化率提升$2\%$但置信区间包含$0$,应如何决策? 2. **业务指标与数据建模** - 如何定义电商场景下的“用户流失”?列举3个相关指标并解释其关联性[^1][^4] - 异动分析:某GMV下降$15\%$,请描述分析框架(需包含数据验证步骤)[^2] 3. **数据可视化与BI工具** - Power BI中DAX公式的`CALCULATE`函数作用是什么?举例说明[^3] - Tableau中如何实现动态参数控制仪表板筛选? --- #### 二、技术类问题 1. **SQL实战** ```sql -- 计算用户留存率(字段:user_id, event_date) SELECT COUNT(DISTINCT day2.user_id) * 1.0 / COUNT(DISTINCT day1.user_id) AS retention_rate FROM login_events day1 LEFT JOIN login_events day2 ON day1.user_id = day2.user_id AND day2.event_date = DATE_ADD(day1.event_date, INTERVAL 1 DAY); ``` - 优化上述查询的索引策略[^4] 2. **Python数据处理** ```python import pandas as pd # 处理缺失值:对销售额字段按地区中位数填充 df['sales'] = df.groupby('region')['sales'].transform(lambda x: x.fillna(x.median())) ``` - 如何用Scikit-learn实现特征标准化与异常值检测? 3. **Excel高级操作** - 使用`OFFSET`+`MATCH`实现动态数据透视表源范围 - 解释`GETPIVOTDATA`函数在自动化报表中的应用场景 --- #### 三、案例分析 **案例1:零售业销售诊断** 某连锁店Q3利润下降$8\%$,数据表包含: $$ \text{利润} = \sum (\text{单价} \times \text{销量} - \text{成本}) $$ - **分析要求**: 1. 分解利润变动的影响因子(价格、销量、成本) 2. 通过Quick BI构建归因分析看板(引用数据治理中的元模型设计思路)[^3] **案例2:用户画像构建** 数据集含`user_id, purchase_history, page_click_logs` - **任务**: 1. 设计RFM模型并输出高价值用户名单 2. 用Tableau绘制用户行为路径桑基图[^1] --- #### 四、数据治理与工程 1. **数据质量提升** - 发现订单表与物流表数据量差异$5\%$,列举3种根因排查方法 - 如何通过元数据管理实现字段血缘追溯? 2. **数据仓库设计** - 星型模型与雪花模型的取舍标准(结合查询性能与存储成本) - 缓慢变化维(SCD)Type 2的实现SQL示例 --- §§ 1. 如何用Python模拟A/B测试的统计功效? 2. 数据仓库中如何优化大表JOIN性能? 3. BI看板开发中如何平衡实时性与计算成本? 4. 数据治理项目中如何推动跨部门协作? --- **附:实战资源推荐** - Power BI高级DAX公式手册(引用数据集) - 《数据科学面试手册》第5章-异动分析框架(引用方法论) - Quick BI企业级案例库(引用决策优化流程)
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值