# 查询各试卷的答题记录的用时排序及此试卷的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;