题解 | #平均活跃天数和月活人数#
平均活跃天数和月活人数
https://www.nowcoder.com/practice/9e2fb674b58b4f60ac765b7a37dde1b9
问题分解
1、找每个uid每个月份下对应的活跃天数,这里用distinct day(submit_time),同时设立条件为2021年份。
2、再从表中按照月份计算每个月的活跃度round(sum(sq1.c_d)/count(sq1.uid),2),这里去掉原本活跃天数为0的用户,也可以在第一步去掉。
3、拼接了月份,并排序。
select concat('20210',m_s) as month,round(sum(sq1.c_d)/count(sq1.uid),2) as avg_active_days,count(sq1.uid) as mau
from (
select uid,month(start_time) as m_s,count(distinct day(submit_time)) as c_d from exam_record where year(start_time) = 2021 group by uid,month(start_time)
) as sq1 where sq1.c_d <> 0 group by sq1.m_s order by month;