当前位置:网站首页>如何分析周活跃率?
如何分析周活跃率?
2022-08-03 15:47:00 【猴子数据分析】

【题目】
有两张表:
1)“用户登录信息表”,包含2个字段:用户id、登录日期。

2)“已注册用户信息表”,包含2个字段:用户id、注册日期。

【问题】计算周活跃用户率。
【解题思路】
1. 活跃用户率
“活跃用户率”是观察用户活跃度的常见指标,一般指所有注册用户中活跃用户的比例。当活跃周期设定为“周”时,计算的就是“周活跃用户率”。
周活跃用户率 = 周活跃用户数 / 当前注册用户数
值得注意的是,“当前注册用户数”指截止本周最后一天之前注册的用户数量。因为,在这之后注册的用户必然不会在本周活跃。
2. 日期处理
为了获取“用户登录信息表”中“登录日期”对应周的信息,我们需要对该字段进行处理。
函数year的作用是日期的年份,使用方法是:
year(日期字段名)函数week的作用是返回一个int型的数值,代表指定日期在所在年的周数信息,使用方法是:
week(日期字段名,参数)其中,“参数”不填写的情况下,默认值为0,代表周日为本周第一天;“参数”为1时,代表周一为本周第一天;“参数”为2时,代表周二为本周第一天;以此类推。
select 用户id,
登录日期,
year(登录日期) as 年份,
week(登录日期,1) as 周数
from 用户登录信息表;返回结果如下:

该结果记为表t1,在此基础上计算每周活跃用户数。
select t1.年份,
t1.周数,
count(distinct 用户id) as 活跃用户数
from
(
select 用户id,
登录日期,
year(登录日期) as 年份,
week(登录日期,1) as 周数
from 用户登录信息表
) as t1
group by t1.年份,t1.周数;返回结果如下:

该结果记为表t2,记录的是每周的活跃用户数。
对“已注册用户信息表”的“注册日期”字段进行处理:
select 用户id,
注册日期,
year(注册日期) as 年份,
week(注册日期,1) as 周数
from 已注册用户信息表;返回结果如下:

该结果记为表t3。
为了后面计算“当前注册用户数”,需要获取“用户登录信息表”中的“活跃最大年份”,以及对应的“活跃最大周数”。
select year(max(登录日期)) as 活跃最大年份,
week(max(登录日期),1) as 活跃最大周数
from 用户登录信息表;返回结果如下:

该结果记为表t4。
3. 多表联结

为了计算每个活跃周的“当前注册用户数”,将表t3和表t4进行联结。
select count(distinct t3.用户id) as 当前注册用户数
from
(
select 用户id,
注册日期,
year(注册日期) as 年份,
week(注册日期,1) as 周数
from 已注册用户信息表
) as t3
left join
(
select year(max(登录日期)) as 活跃最大年份,
week(max(登录日期),1) as 活跃最大周数
from 用户登录信息表
) as t4 on 1 = 1
where t3.年份 < t4.活跃最大年份 or (t3.年份 = t4.活跃最大年份 and t3.周数 <= t4.活跃最大周数);返回结果如下:

该结果记为表t5。
最后,将表t2和表t5联结,计算最终结果:
select t2.年份,
t2.周数,
t2.活跃用户数,
t5.当前注册用户数,
t2.活跃用户数/t5.当前注册用户数 as 周活跃用户率
from
(
select t1.年份,
t1.周数,
count(distinct 用户id) as 活跃用户数
from
(
select 用户id,
登录日期,
year(登录日期) as 年份,
week(登录日期,1) as 周数
from 用户登录信息表
) as t1
group by t1.年份,t1.周数
) as t2
left join
(
select count(distinct t3.用户id) as 当前注册用户数
from
(
select 用户id,
注册日期,
year(注册日期) as 年份,
week(注册日期,1) as 周数
from 已注册用户信息表
) as t3
left join
(
select year(max(登录日期)) as 活跃最大年份,
week(max(登录日期),1) as 活跃最大周数
from 用户登录信息表
) as t4 on 1 = 1
where t3.年份 < t4.活跃最大年份 or (t3.年份 = t4.活跃最大年份 and t3.周数 <= t4.活跃最大周数)
) as t5 on 1 = 1;返回结果为:

【本题考点】
1)考查对用户活跃指标“周活跃用户率”的了解;
2)考查对日期的处理能力,比如week函数的使用;
3)考查对多表联结的了解。


️点击「阅读原文」
免费报名 数据分析训练营
边栏推荐
- A new round of competition for speech recognition has started. Will natural dialogue be the next commanding height?
- DC-DC 2C(40W/30W) JD6606SX2退功率应用
- 您的移动端app安全吗
- 49 万奖金等你来拿!第四届实时计算 Flink 挑战赛启动,Beyond Stream Processing!
- 自定SvgIcon公用组件
- Taurus.MVC WebAPI 入门开发教程1:框架下载环境配置与运行(含系列目录)。
- unity用代码生成LightProbeGroup
- ruoyi若依框架@DataScope注解使用以及碰到的一些问题
- How to play deep paging with hundreds of millions of data?Compatible with MySQL + ES + MongoDB
- 【899. Ordered Queue】
猜你喜欢

With a single operation, I improved the SQL execution efficiency by 10,000,000 times!

JS basics--judgment

【899. Ordered Queue】

MATLAB gcf图窗保存图像,黑色背景/透明背景

小熊派——无线联网开发

NodeJs - cross domain

2021年12月电子学会图形化二级编程题解析含答案:消灭蝙蝠

leetcode:899. 有序队列【思维题】

ECCV 2022 | Relational Query-Based Temporal Action Detection Methods

How to get the 2 d space prior to ViT?UMA & Hong Kong institute of technology & ali SP - ViT, study for visual Transformer 2 d space prior knowledge!.
随机推荐
Ark server open tool, server tutorial win
[Code Hoof Set Novice Village 600 Questions] Define a function as a macro
leetcode-105 从前序与中序遍历序列构造二叉树-使用栈代替递归
微电网和直流电网中最优潮流(OPF)的凸优化(Matlab代码实现)
一个文件管理系统的软硬件配置清单
下午见!2022京东云数据库新品发布会
美国国防部更“青睐”光量子系统研究路线
cnpm 安装成功后提示不是内部和外部命令,也不是可运行的命令解决方案
实习路途:记录给我的第一个实习项目中的困惑
JS手写call apply bind (详细)(面试)
随笔-Unity中一个简易的Spine动画控制器
使用Make/CMake编译ARM裸机程序(基于HT32F52352 Cortex-M0+)
出海季,互联网出海锦囊之本地化
1、实例开启无锁表结构变更以后,在任务编排中通过“单实例SQL”节点进行的结构变更,是优先采用无锁表
leetcode:899. 有序队列【思维题】
5 v 8.4 v1A charging current charging management IC
【899. 有序队列】
随笔-UGUI中LayoutGroup来自适应长度图片长度
After the cnpm installation is successful, the prompt is not an internal and external command, nor is it a runnable command solution
新版本MaxCompute 的SQL支持 UDF 分区裁剪的逻辑是怎样的?