WITH a AS(
SELECT
exam_id,
timestampdiff(second,start_time, submit_time) as finish,
DENSE_RANK() OVER (PARTITION BY exam_id ORDER BY timestampdiff(second,start_time, submit_time) DESC) as fastrank,
DENSE_RANK() OVER (PARTITION BY exam_id ORDER BY timestampdiff(second,start_time, submit_time)) as slowrank
FROM
exam_record
),
a1 AS(
SELECT
exam_id,
finish as finish1
FROM
a
WHERE
fastrank = 2
),
a2 AS(
SELECT
exam_id,
finish as finish2
FROM
a
WHERE
slowrank = 2
)
SELECT
exam_id,
duration,
release_time
FROM
a1
JOIN
a2 USING(exam_id)
JOIN
examination_info USING(exam_id)
WHERE
abs(finish1 - finish2) > duration*60/2
ORDER BY
exam_id DESC