select distinct exam_id,duration,release_time from( select exam_id, duration, release_time,sum(case when rank1 = 2 then dur when rank2 = 2 then -dur else 0 end) as sub from( select t1.exam_id, t2.duration, t2.release_time,rank1,rank2,dur from (select uid, exam_id,timestampdiff(minute, start_time, submit_time) dur, row_number() over(partition by exam_id order by timestampdiff(minute, start_time, submit_time) desc) rank1, row_number() over(partition by exam_id order by timestampdiff(minute, start_time, submit_time)asc) rank2 from exam_record where submit_time is not null) t1 left join examination_info t2 on t1.exam_id = t2.exam_id) t3 group by exam_id having sub * 2 >= duration) t4 order by exam_id desc
逐步查询