题解 | #月均完成试卷数不小于3的用户爱作答的类别#
月均完成试卷数不小于3的用户爱作答的类别
https://www.nowcoder.com/practice/b1d13efcfa0c4ecea517afbdb9090845
做题建议:
体会1:牛客的题最好分析分析他的测试用例的,说实话他的描述真的不如leetcode清楚,很多有歧义的地方,前面我踩了很多坑就是因为有歧义造成对需求理解不到位。
体会2:拆步骤吧,虽然说个人一直觉得能一把梭就把代码写完确实很帅,但这样无形中就增加了对题的难度,其实自己有时候就喜欢这样,感觉很帅但是题会把你卡很久,不利于及时完成用户需求。
体会3:暂时还没有
#当月:submit_time最大的年月 #完成试卷数量:submit_time 不是空 #用户的 # 1002用户 (9003,1,算法,9月)(9002,1,C++,9),(9001,1,SQL,9)(9002,0,C++,7月) 三次完成 1次没完成 # 1005用户 (9001,1,SQL,9) (9002,1,c++,9) (9002,1,C++,9) 三次完成,0次不完成 #统计结果:C++ 1次完成+1次不完成+1次完成+1次完成 # SQL 1次完成+1次完成 # 算法 1次完成 #结论:条件1:筛选出 属于当前表的最大年月 且 完成试卷数量 >=3 的用户 # 在条件1的基础下,找到这些用户的所有答过的题,将他们按照tag进行分类,统计不同分类的数量,然后按照数量进行降序输出 select d.tag,count(1) as tag_cnt from exam_record c join examination_info d on c.exam_id = d.exam_id where c.uid in( select a.uid from exam_record a join (select max(submit_time) as maxData from exam_record ) b on date_format(a.submit_time,'%Y%m') = date_format(b.maxData,"%Y%m") and a.submit_time is not null group by a.uid having count(1) >= 3 ) group by d.tag order by tag_cnt desc