题解 | #筛选限定昵称成就值活跃日期的用户#

筛选限定昵称成就值活跃日期的用户

http://www.nowcoder.com/practice/2ed07ff8f67a474d90523b88402e401b

要求:请找到昵称以『牛客』开头『号』结尾、成就值在1200~2500之间,且最近一次活跃(答题或作答试卷)在2021年9月的用户信息。

前两个条件用简单的where就能筛选,重点是最后一个条件。

最近一次考虑max函数,答题或作答试卷在两个表,考虑union连接后使得max(month)=202109.

最终代码:
select act.uid , nick_name , achievement
from (
    select uid, exam_id , start_time as act_time  #只要答题不管完成否都算活跃 所以用starttime
    from exam_record er
    union all 
    select uid, question_id , submit_time as act_time
    from practice_record pr
) act                                             #记得重命名表
join user_info ui on act.uid =ui.uid
where nick_name like '牛客%号'                     # 昵称以『牛客』开头『号』结尾
and achievement BETWEEN 1200 and 2500             # 成就值在1200~2500之间 between and 包含边界
group by act.uid
having max(DATE_FORMAT(act_time,'%Y%m'))=202109   #分组函数max不能放在where后 只能分组后筛选
全部评论

相关推荐

重生2012之我是java程序员:换个稍微正式点的照片吧
点赞 评论 收藏
分享
10-24 11:10
山西大学 Java
若梦难了:哥们,面试挂是很正常的。我大中厂终面挂,加起来快10次了,继续努力吧。
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务