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

近三个月未完成试卷数为0的用户完成情况

http://www.nowcoder.com/practice/4a3acb02b34a4ecf9045cefbc05453fa

select uid, count(start_time) as exam_complete_cnt
from
  (select*,
    dense_rank() 
    over(partition by uid order by date_format(start_time, '%Y-%m')desc) as rk
    from exam_record
  ) as t1
where rk <= 3
group by uid
having count(start_time) = count(submit_time)
order by
  exam_complete_cnt desc,
  uid desc

1、本题重点在于找到近三个月的作答记录 以及 筛掉近三个月未作答的用户

2、注意筛选月份时要倒序排序,因此月份大的排在前面

3、此处使用dense_rank()函数是因为dense_rank()函数是连续排序

4、比如筛选出的数据分别是'2021-10' '2021-09' '2021-09' '2021-08'这几个月的数据,那么用dense_rank()函数排序就为1、2、2、3;用rank()函数排序就为1、2、2、4;显然会出现错误

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务