题解 | #分别满足两个活动的人#这题的难度不应该是中等,比有些较难和困难的还麻烦点

分别满足两个活动的人

http://www.nowcoder.com/practice/a126cea91d7045e399b8ecdcadfb326f

解题时犯了一个错误。差点被group by 分组后的数据误导

思路是按照题目要求的条件分别求出符合两种结果的数据最后再合并结果。 条件1:每次测试成绩>=85,也就是测试次数=获得85分的次数。 条件2:Hard难度、分数大于80、解题时间小于30分钟。

题目要求的是2021年内,提交后发现不增加这个条件也能通过。 第二段的求类型2的时候,一开始写的是<=duration/2。发现不用group by 输出的结果会使1003同时获得两个标签“1和2”。使用了group by 输出的结果是用例的结果。但无法在网页上提交(显示的是group by 。。。。那段英文) 再次核对题目要求之后,修改成<duration/2。去掉第二段的group by。 结果通过。 如果没有做这个修改,提交的结果能通过题目的用例,但应该最后还是会报错。因为分组后其他列值是原组内随机的一个值。只是因为刚好那个值符合要求,输出结果才准确。

select uid,activity from (
select uid,if (count(uid) = sum(if(score>='85',1,0)),'activity1',null) activity
from examination_info e1
join exam_record e2
on e1.exam_id=e2.exam_id
group by uid
union all
select uid,
if(timestampdiff(minute,start_time,submit_time) #换算成分钟
   < duration/2 #考虑到可能会有题目的答题时间并不是60分钟,直接用字段值折半。
and difficulty = 'hard' and score > '80' , 'activity2',null) activity
from examination_info e1 join exam_record e2
on e1.exam_id=e2.exam_id
) a
where activity is not null
order by uid
全部评论

相关推荐

吐泡泡的咸鱼:我也工作了几年了,也陆陆续续面试过不少人,就简历来说,第一眼学历不太够,你只能靠你的实习或者论文或者项目经历,然后你没有论文,没有含金量高的比赛和奖项,只能看实习和项目,实习来说,你写的实习经历完全不清楚你想找什么工作?行研?数据分析?且写的太少了,再看项目,这些项目先不说上过大学读过研究生的都知道很水,然后对你想找的岗位有什么帮助呢?项目和实习也完全不匹配啊,你好像在努力将你所有的经历都放在简历里想表现你的优秀,但是对于你想找的岗位来说,有什么用呢?最后只能获得岗位不匹配的评价。所以你需要明白你想要找的岗位要求是什么,是做什么的,比如产品经理,然后再看你的经历里有什么匹配的上这个岗位,或者对这个岗位以及这个岗位所在的公司有价值,再写到你的简历上
点赞 评论 收藏
分享
评论
点赞
1
分享

创作者周榜

更多
牛客网
牛客企业服务