题解 | #每个6/7级用户活跃情况#

每个6/7级用户活跃情况

https://www.nowcoder.com/practice/a32c7c8590324c96950417c57fa6ecd1

select i.uid uid,if(m.cnt_m is null,0,m.cnt_m) as act_month_total	,
if(d.cnt_d is null,0,d.cnt_d) as act_days_2021,
if(e.exam_cnt is null,0,e.exam_cnt) as act_days_2021_exam,
if(q.question_cnt is null,0,q.question_cnt) as act_days_2021_question
from user_info i
left join (select uid,count(distinct date(submit_time)) as exam_cnt    #试卷活跃天数
from exam_record where year(submit_time)=2021 group by uid) e on e.uid=i.uid
left join (select uid,count(distinct date(submit_time)) as question_cnt
from practice_record where year(submit_time)=2021  group by uid)q on q.uid=i.uid  #做题活跃天数
left join 
(select t1.uid uid,count(distinct t1.date) cnt_d from     # 总活跃天数
(select distinct uid uid,  date(submit_time) date
from exam_record where year(start_time)=2021
union
select distinct uid uid,  date(submit_time) date
from practice_record where year(submit_time)=2021)t1
group by t1.uid)d on d.uid=i.uid
left join 
(select t2.uid uid,count(distinct t2.date) cnt_m from     #活跃的月份
(select distinct uid uid, date_format(submit_time,'%Y%m') date
from exam_record 
union
select distinct uid uid, date_format(submit_time,'%Y%m') date
from practice_record)t2
group by t2.uid)m on m.uid=i.uid
where i.level in('6','7')
order by 2 desc,3 desc

全部评论
先分别计算各个指标数据作为临时表,然后用用户表左连接多个指标表
点赞 回复 分享
发布于 2023-03-03 11:35 江苏

相关推荐

迷茫的大四🐶:都收获五个了,兄弟那还说啥,不用改了,去玩吧
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务