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

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

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

本题思路首先是要查询出近三个有作答记录月份没有出现试题未完成记录的用户,而后根据查询到的用户进行子查询得到进行最后查询所需的数据。本题的要点如下:

  1. 利用dense_rank()over()函数筛选出用户作达记录中近三个月份的数据;
  2. 利用group by函数进行聚合,计算start_time字段以及submit_time字段的个数是否相等作为判断是否有未完成记录的依据;
  3. 利用上述两步得到符合要求的用户,将其作为子查询的条件筛选得到这些用户近三个月的作达记录并进行统计即可。
select
  uid,
  count(start_time) exam_complete_cnt
from
  (select *,dense_rank() over(partition by uid order by date_format(start_time, '%Y%m') desc) rk
    from exam_record) t 
where
  rk <= 3
  and uid in (select uid from
      				(select uid,rk,start_time start,submit_time submit
        					from
          						(select *,dense_rank() over(partition by uid order by date_format(start_time, '%Y%m') desc) rk
            						from exam_record) t where rk <= 3) t1
    			group by uid 
                having count(start) = count(submit))
group by uid
order by exam_complete_cnt desc,uid desc
全部评论

相关推荐

吴offer选手:HR:我KPI到手了就行,合不合适关我什么事
点赞 评论 收藏
分享
一面052350min1.自我介绍2.在学校里的经历3.你希望测试开发岗位里的测试工作和开发工作占比是多少?4.实习拷打,详细拷打实习中做过的接口自动化项目5.为什么接口自动化项目选择pytest?6.设计测试用例会考虑哪些点?7.用过jekins的什么功能,了解过它底层的实现吗8.技术栈是?熟悉的编程语言?9.口述思路:二叉树的遍历10.手撕:二分查找11.浏览器输入url到展示页面的全流程?12.进程和线程13.死锁14.慢查询15.读过有关测试的技术书籍吗16.写测试自动化时用过python的哪些库?17.反问(作业帮直播业务,给学生直播上课之类的)&nbsp;二面052755min1.自我介绍2...
一笑而过2222:1. String和StringBuffer区别:String是不可变、线程安全(因不可变特性)的,每次操作会创建新对象,适合只读场景;StringBuffer是可变、线程安全(方法加锁)的,可直接修改对象,适用于多线程环境下频繁修改字符串的场景 。 2. Java的垃圾回收器:Java垃圾回收器是JVM自动管理内存的组件,基于分代收集理论,通过标记-清除、复制、标记-整理等算法回收不再使用的对象,常见类型有Serial、Parallel、CMS、G1等,分别适用于不同性能需求场景。 3. Java的序列化:Java序列化是将对象转换为字节序列以便存储或传输的机制,对象所属类需实现Serializable接口,反序列化可将字节流恢复为对象,常用于分布式通信、数据持久化和对象深拷贝等场景。
查看24道真题和解析 面经...
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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