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

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

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后 只能分组后筛选
全部评论

相关推荐

听说改名字就能收到offer哈:Radis写错了兄弟
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务