题解 | #每个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





全部评论

相关推荐

小狗吃臭臭:以后用不到你设计的手机了,可惜!
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务