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

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

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

以防后面想不起来怎么做了。

有个卡点是在最后用例只通过1/2,因为把完成时间为null的剔除了

其实完成时间为null,自然使用时间就会超过duration

还是习惯搞临时表,方便多了,还清晰

正序倒序用row_number然后desc和asc就好

with
    time as (
        select
            er.exam_id,
            ei.duration,
            ei.release_time,
            timestampdiff (minute, er.start_time, er.submit_time) as ti,
row_number() over (
                partition by
                    er.exam_id
                order by
                    timestampdiff (minute, er.start_time, er.submit_time) desc
            ) as rank1,
            row_number() over (
                partition by
                    er.exam_id
                order by
                    timestampdiff (minute, er.start_time, er.submit_time) asc
            ) as rank2
        from
            exam_record er
            left join examination_info ei on er.exam_id = ei.exam_id
    )
select 
    t1.exam_id,t1.duration,t1.release_time
from
    time t1
left join time t2
on t1.exam_id=t2.exam_id
where t1.rank1=2 and t2.rank2=2 and (t1.ti-t2.ti)*2> t1.duration
order by t1.exam_id desc
全部评论

相关推荐

冲鸭2024:亚信不去也罢
投递亚信科技(中国)有限公司等公司7个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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