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

select
    exam_id,
    duration,
    release_time
from
    (
        select
            exam_id,
            duration,
            release_time,
            作答用时 - lag (作答用时, 1) over (
                partition by
                    exam_id
                order by
                    作答用时 asc
            ) 做差结果
        from
            (
                select
                    ei.exam_id,
                    duration,
                    release_time,
                    timestampdiff (second, start_time, submit_time) / 60 作答用时,
                    rank() over (
                        partition by
                            ei.exam_id
                        order by
                            timestampdiff (second, start_time, submit_time) / 60 desc
                    ) 从大到小排名,
                    rank() over (
                        partition by
                            ei.exam_id
                        order by
                            timestampdiff (second, start_time, submit_time) / 60 asc
                    ) 从小到大排名
                from
                    test.examination_info ei
                    join test.exam_record er on ei.exam_id = er.exam_id
            ) a
        where
            a.从大到小排名 = 2
            or a.从小到大排名 = 2
    ) b
where
    做差结果 is not null
    and 做差结果 > duration / 2
order by
    exam_id desc

全部评论

相关推荐

评论
1
收藏
分享

创作者周榜

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