题解 | #第二快/慢用时之差大于试卷时长一半的试卷#

第二快/慢用时之差大于试卷时长一半的试卷

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

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务