题解 | #平均活跃天数和月活人数#
平均活跃天数和月活人数
http://www.nowcoder.com/practice/9e2fb674b58b4f60ac765b7a37dde1b9
请计算2021年每个月里试卷作答区用户平均月活跃天数avg_active_days和月度活跃人数mau. 注:此处活跃指有交卷行为。
求月活跃按group by month即可
但是该题有一个难点大部分人都容易出错,那就是计算平均月活天数的公式。
平均月活=该月活跃天数/该月总活跃人数
count(submit_time)/count(distinct uid)
这样是明显错误的,分母没有问题,但是分子是不对的。
举个例子 用户1在某月的一号活跃了两次,二号活跃了三次。那么其实该用户的活跃天数是2天。我们应该使用
count(distinct uid,date(submit_time))
来计算该月的活跃天数。
完整代码如下:
select date_format(submit_time,'%Y%m') as month,
round(count(distinct uid,date_format(submit_time,'%Y%m%d'))/count(distinct uid),2) as mc,
count(distinct uid ) as mau
from exam_record
where year(submit_time)=2021
group by month