题解 | #第二快/慢用时之差大于试卷时长一半的试卷#
第二快/慢用时之差大于试卷时长一半的试卷
https://www.nowcoder.com/practice/b1e2864271c14b63b0df9fc08b559166
SELECT distinct exam_id, duration, release_time FROM # 用dense_rank()基于每种类型试卷排序,获得最短答题时间和最短时间排名 (SELECT exam_id, time_spend fasttime, DENSE_RANK()OVER(PARTITION BY exam_id ORDER BY time_spend) fast FROM( SELECT exam_id, timestampdiff(minute, start_time, submit_time) time_spend FROM exam_record er ) t1) t11 JOIN # 用dense_rank()基于每种类型试卷排序,获得最长答题时间和最长时间排名 (SELECT exam_id, time_spend slowtime, DENSE_RANK()OVER(PARTITION BY exam_id ORDER BY time_spend DESC) slow FROM( SELECT exam_id, timestampdiff(minute, start_time, submit_time) time_spend FROM exam_record er ) t2) t21 USING(exam_id) JOIN examination_info USING(exam_id) # 筛选出时间最短的第二名和时间最长的第二名 # 利用时间差的条件进一步筛选 WHERE fast = 2 and slow = 2 and (slowtime - fasttime) > (duration)/2 ORDER BY exam_id DESC