题解 | #平均活跃天数和月活人数#
平均活跃天数和月活人数
https://www.nowcoder.com/practice/9e2fb674b58b4f60ac765b7a37dde1b9
select date_format(Date,'%Y%m') as month ,round(count(uid)/count(distinct uid),2) as avg_active_days ,count(distinct uid) as mau from(select uid, date_format(submit_time,'%Y%m%d') as Date from exam_record where date_format(submit_time,'%Y%m%d') is not null and year(submit_time) = 2021 group by uid,date_format(submit_time,'%Y%m%d')) as d_active_record group by date_format(Date,'%Y%m')
题目:请计算2021年每个月里试卷作答区用户平均月活跃天数avg_active_days和月度活跃人数mau。
上一题的第二种解法。
解析:
一、先找出每个用户在2021年每天的活跃情况(根据用户和年月日进行分组),用子查询表示,做主查询的from 子句部分。
二、根据子查询,再次对子查询结果按年月分组,即可得到每月有哪些用户在哪些天活跃了。根据这个情况对每月的用户总活跃天数计算,其中用户在每月出现一次即为活跃一次,如1001在7月2号出现一次,活跃一次,1002分别在7月2号和7月5号出现,活跃两次,将两者的出现的行数(即uid的行数)相加则得到7月用户活跃总次数。