# 查询各试卷的答题记录的用时排序及此试卷的id select ei.exam_id, submit_time-start_time t_d, rank()over(partition by ei.exam_id order by submit_time-start_time desc) t_rank from examination_info ei join exam_record er on ei.exam_id=er.exam_id where submit_time is not null # 查询各试卷的答题记录中第二慢的时间及该试卷的id (1) select exam_id, t_d from( select ei.exam_id, submit_time-start_time t_d, rank()over(partition by ei.exam_id order by submit_time-start_time desc) t_rank from examination_info ei join exam_record er on ei.exam_id=er.exam_id where submit_time is not null ) k1 where t_rank = 2 # 查询各试卷的答题记录中第二慢的时间及该试卷的id (2) select exam_id, t_d from( select ei.exam_id, submit_time-start_time t_d, rank()over(partition by ei.exam_id order by submit_time-start_time asc) t_rank from examination_info ei join exam_record er on ei.exam_id=er.exam_id where submit_time is not null ) k2 where t_rank = 2 --------------------------------------------完整语句如下------------------------------------------- # 将结果表(1)和(2)以及examination_info连接,并查询第二快和第二慢用时之差大于试卷时长的一半的试卷信息 select ei.exam_id, duration, release_time from examination_info ei join ( select exam_id, t_d t_d1 from( select ei.exam_id, submit_time-start_time t_d, rank()over(partition by ei.exam_id order by submit_time-start_time desc) t_rank from examination_info ei join exam_record er on ei.exam_id=er.exam_id where submit_time is not null ) k1 where t_rank = 2 ) k3 on k3.exam_id=ei.exam_id join( select exam_id, t_d t_d2 from( select ei.exam_id, submit_time-start_time t_d, rank()over(partition by ei.exam_id order by submit_time-start_time asc) t_rank from examination_info ei join exam_record er on ei.exam_id=er.exam_id where submit_time is not null ) k2 where t_rank = 2 ) k4 on k4.exam_id=ei.exam_id where t_d1-t_d2 > duration/2 order by ei.exam_id desc;