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

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

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

#统计每个6/7级用户总活跃月份数、2021年活跃天数、2021年试卷作答活跃天数、2021年答题活跃天数,按照总活跃月份数、2021年活跃天数降序排序
#1.找出6/7级用户 uid
#2.统计总活跃月份数(去重)分为试卷活跃 开始作答即为试卷活跃 答题活跃 提交作答即为答题活跃
#3.统计2021年活跃天数(去重),试卷作答天数(去重),答题天数(去重)

#6/7级用户 uid
select  uid
from user_info
where level in (6,7)

#活跃表
    #试卷活跃
    (select uid, date_format(start_time, '%Y%m')  act_month,date_format(start_time, '%Y%m%d')  act_day,'exam' classify
    from exam_record
    group by uid,act_month,act_day) 
    union all
    #答题活跃
    (select uid, date_format(submit_time, '%Y%m')  act_month,date_format(submit_time, '%Y%m%d')  act_day,'practice' classify
    from practice_record
    group by uid,act_month,act_day)

#开始组合以上进行查询
select uid,
    count(distinct act_month) act_month_total,
    Count(Distinct Case When Year(act_day) = 2021 Then act_day Else Null End)  act_days_2021,
    Count(Distinct Case When Year(act_day) = 2021 and classify='exam' Then act_day Else Null End)  act_days_2021_exam,
    Count(Distinct Case When Year(act_day) = 2021 and classify='practice' Then act_day Else Null End)  act_days_2021_question
from user_info
left join 
((select uid, date_format(start_time, '%Y%m')  act_month,date_format(start_time, '%Y%m%d')  act_day,'exam' classify
    from exam_record
    group by uid,act_month,act_day) 
    union all
    (select uid, date_format(submit_time, '%Y%m')  act_month,date_format(submit_time, '%Y%m%d')  act_day,'practice' classify
    from practice_record
    group by uid,act_month,act_day)) data1 using(uid)
where uid in (select  uid
         from user_info
         where level in (6,7))
group by uid
order by act_month_total desc,act_days_2021 desc

全部评论

相关推荐

12-15 14:25
云南大学 Java
lei22:入职可能会看学信网,最好别伪装,这个简历找实习肯定是够的,肯定会有收 28 届实习生的公司的,多投就行
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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