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

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

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

易错点: 1.对于各个数据都为零的用户,也要记录在表中:用left join 2.date_format(time,'%y%m%d')函数掌握不熟悉 3.count函数里用case when then end之前没用过,新思路 4.问题拆分求解

select uid,
    count(distinct act_month) as act_month_total,
    count(distinct case when year(act_day)=2021 then act_day end) 
        as act_day_2021,
    count(distinct case when year(act_day)=2021 and tag='exam' then act_day end) 
        as act_days_2021_exam,
    count(distinct case when year(act_day)=2021 and tag='practice' then act_day end)
        as act_days_2021_question   
from user_info
left join (select uid,date_format(start_time,'%y%m%d') as act_day,left(start_time,7) as act_month,'exam' as tag
    from exam_record
    union all
    select uid,date_format(submit_time,'%y%m%d') as act_day,left(submit_time,7) as act_month,'practice' as tag
    from practice_record) as t using(uid)
where level in(6,7)
group by uid 
order by act_month_total desc,act_day_2021 desc





全部评论

相关推荐

牛客101244697号:这个衣服和发型不去投偶像练习生?
点赞 评论 收藏
分享
11-07 13:31
怀化学院 Java
勇敢牛牛不怕难:又疯一个
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务