题解 | #平均活跃天数和月活人数#
平均活跃天数和月活人数
https://www.nowcoder.com/practice/9e2fb674b58b4f60ac765b7a37dde1b9
做完看了下评论区,使用窗口函数的较少,刚好我是用的窗口函数,在此分享下思路。
本题要难点包括如下几个:
1.从给出的时间中提取年月,这里可以使用date_format()函数;
2.计算每月总的活跃活跃天数,这里我犯了一个失误,数据中可能存在一个用户一天有多次成功提交的记录,导致活跃天数虚高,这里在计算活跃天数时需要依据用户id、提交日期进行去重;
3.计算每月活跃用户,这里同样是要对用户id去重计数
同样还有如下几个细节需要注意:
1、活跃用户是有成功提交记录的,要剔除submit_time为空的数据;
2、本题仅筛选2021年的数据,筛选时也要予以限制;
3、题目要求保留两位小数,此处可使用round()函数。
select month,round(active/mau,2) avg_active_days,mau from (select date_format(submit_time,'%Y%m') month,count(distinct uid,date_format(submit_time,'%Y%m%d')) active,count(distinct uid) mau from exam_record where submit_time is not null and YEAR(submit_time) = 2021 group by month) t