题解 | #分别满足两个活动的人#

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

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

这个题有个地方有些模糊,那就是怎么定义活跃。对于试卷作答用户来讲,取start_time字段(不管是否提交都算活跃);对于答题用户来讲,取submit_time字段即可。本题作答巧妙之处在于构建了一列,用于判断2021年试卷和答题用户。

-- 先构造一个临时表
with tmp as (
select 
    a.uid,
    b.exam_id as id,
    b.start_time as tm,
    concat(year(b.start_time), 'shijuan') as tp
from (select uid from user_info where level between 6 and 7) a 
left join exam_record b on a.uid=b.uid
union all
select 
    c.uid,
    d.question_id as id,
    d.submit_time as tm,
    concat(year(d.submit_time), 'dati') as tp
from (select uid from user_info where level between 6 and 7) c
left join practice_record d on c.uid=d.uid)

-- 然后进行查询
select 
    uid, 
    count(distinct date_format(tm, '%Y%m')) as act_month_total,
    count(distinct if(year(tm)=2021, date(tm), null)) as act_days_2021,
    count(distinct if(tp='2021shijuan', date(tm), null)) as act_days_2021_exam,
    count(distinct if(tp='2021dati', date(tm), null)) as act_days_2021_question
from tmp 
group by uid
order by act_month_total desc, act_days_2021 desc




全部评论

相关推荐

来个大佬救一下,为上投了都是石沉大海了,没实习经历的话怕秋招直接进不了面。什么实习这么难找,基本
心态爆炸了:现在正式的岗位都少,实习基本不咋招的,除了大厂,中小企业其实没那么多岗位需求,就算是有,大多都是招一两个廉价劳动力,同时,他们也会希望你一来就能干活的,没时间培训你,就让你了解公司的项目,你了解完就可以开始干活。再者是,很多低质量的实习其实用处没有那么大的。我去年也是找实习找到破防,最后去了一家深圳的小公司实习,工作对我来说很简单,甚至不如我在学校做的项目,秋招的时候,这段实习经历也并没有帮上什么忙,投递简历,依旧非常低的回复率。低回复率是常态,尤其是找实习,找不到,那就把重心放在优化自己的简历和项目,多看八股文,锻炼自己的面试能力,多看别人的面经,自己模拟面试,等秋招的时候,只要有那么寥寥几次,好好抓住那几次机会。
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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