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

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

https://www.nowcoder.com/practice/b1e2864271c14b63b0df9fc08b559166

SELECT DISTINCT
    exam_id,
    duration,
    release_time
FROM
    (
        SELECT
            exam_id,
            duration,
            release_time,
            SUM(
                CASE
                    WHEN rank1 = 2 THEN ABS(costtime)
                    WHEN rank2 = 2 THEN - ABS(costtime)
                    ELSE 0
                END
            ) as sub
        FROM
            (
                SELECT
                    exam_id,
                    duration,
                    release_time,
                    TIMESTAMPDIFF (minute, start_time, submit_time) as costtime,
                    ROW_NUMBER() OVER (
                        PARTITION BY
                            exam_id
                        ORDER BY
                            TIMESTAMPDIFF (minute, start_time, submit_time) DESC
                    ) as rank1,
                    ROW_NUMBER() OVER (
                        PARTITION BY
                            exam_id
                        ORDER BY
                            TIMESTAMPDIFF (minute, start_time, submit_time) ASC
                    ) as rank2
                FROM
                    exam_record
                    JOIN examination_info USING (exam_id)
                WHERE
                    submit_time IS NOT NULL
            ) a
        GROUP BY
            exam_id
    ) b
WHERE
    sub * 2 >= duration
ORDER BY
    exam_id DESC;

全部评论

相关推荐

06-17 21:57
门头沟学院 Java
白友:噗嗤,我发现有些人事就爱发这些,明明已读不回就行了,就是要恶心人
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务