当前位置:网站首页>如何分析周活跃率?
如何分析周活跃率?
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)考查对多表联结的了解。


️点击「阅读原文」
免费报名 数据分析训练营
边栏推荐
猜你喜欢

如何将二维空间先验注入到ViT中? UMA&港理工&阿里提出SP-ViT,为视觉Transformer学习2D空间先验知识!...

简介undo log、truncate、以及undo log如何帮你回滚事物?

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

每日练习------有10个数字要求分别用选择法从大到小输出

MATLAB gcf figure save image with black background/transparent background

力扣1206. 设计跳表--SkipList跳表是怎么跳的?

聊聊这个SaaS领域爆火的话题

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

【网络结构】VGG

2021年12月电子学会图形化三级编程题解析含答案:分身术
随机推荐
Daily practice------There are 10 numbers that are required to be output from large to small by selection method
PWA 应用 Service Worker 缓存的一些可选策略和使用场景
No inner demons, to dry!SQL optimization and diagnosis
语音识别新一轮竞争打响,自然对话会是下一个制高点吗?
cmd 关闭端口
NodeJs - cross domain
GTK实现旋转加载动画
上亿数据怎么玩深度分页?兼容MySQL + ES + MongoDB
Ark server open tool, server tutorial win
How much does Ark Survival Evolved cost?
简介undo log、truncate、以及undo log如何帮你回滚事物?
[Code Hoof Set Novice Village 600 Questions] Define a function as a macro
2021年12月电子学会图形化四级编程题解析含答案:聪明的小猫
美国国防部更“青睐”光量子系统研究路线
posgresql 到 es 报这个错误 ,啥意思
自定SvgIcon公用组件
扫雷?拿来吧你(递归展开+坐标标记)
高可用版 主数据库数据结构改变 备数据库会自动改变吗
How to prevent hacking Windows server security Settings
神经网络,凉了?