题解 | #第二快/慢用时之差大于试卷时长一半的试卷#
第二快/慢用时之差大于试卷时长一半的试卷
https://www.nowcoder.com/practice/b1e2864271c14b63b0df9fc08b559166
select distinct exam_id
,duration
,release_time
from(
select er.exam_id
/*作答时间timestampdiff(second,start_time,submit_time)第二快*/
,nth_value(timestampdiff(second,start_time,submit_time),2) over(partition by exam_id order by timestampdiff(second,start_time,submit_time) desc) AS fast_2
,nth_value(timestampdiff(second,start_time,submit_time),2) over(partition by exam_id order by timestampdiff(second,start_time,submit_time) asc) AS last_2
,duration
,release_time
from exam_record er
inner join examination_info ei on er.exam_id = ei.exam_id
)t1
where fast_2 - last_2 > duration*30
order by exam_id desc
1、timestampdiff(second, start_time, submit_time)计算出作答时间,单位秒
2、nth_value(timestampdiff(secon, start_time, submit_time),2) over(partion by exam_id .....desc/asc)取出每类试卷exam_id作答时间第二快和第二慢的值,是一个开窗函数。每一行答题记录都添加last_2和fast_2,形成表t1
3、从t1中取出满足条件的exam_id
查看8道真题和解析