题解 | #第二快/慢用时之差大于试卷时长一半的试卷#
第二快/慢用时之差大于试卷时长一半的试卷
https://www.nowcoder.com/practice/b1e2864271c14b63b0df9fc08b559166
SELECT l3.exam_id,l3.duration, l3.release_time
FROM(
SELECT l2.exam_id,l2.duration, l2.release_time,
SUM( CASE WHEN l2.max_rank=2 THEN l2.exam_duration
WHEN l2.min_rank=2 THEN -l2.exam_duration
ELSE 0
END
) AS duration_sub
FROM(
SELECT l1.exam_id,l1.exam_duration, i.duration, i.release_time,
ROW_NUMBER() OVER (PARTITION BY l1.exam_id ORDER BY l1.exam_duration DESC) AS max_rank,
ROW_NUMBER() OVER (PARTITION BY l1.exam_id ORDER BY l1.exam_duration ) AS min_rank
FROM(
SELECT exam_id, TIMESTAMPDIFF(SECOND, start_time, submit_time) AS exam_duration
FROM exam_record
WHERE submit_time IS NOT NULL
) AS l1
LEFT JOIN examination_info AS i ON l1.exam_id=i.exam_id
) AS l2
GROUP BY l2.exam_id
) AS l3
WHERE l3.duration_sub >= l3.duration*60*0.5
ORDER BY l3.exam_id DESC;

查看21道真题和解析