这道题简单在从始至终不用group by

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

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

WITH a AS(
    SELECT
        exam_id,
        timestampdiff(second,start_time, submit_time) as finish,
        DENSE_RANK() OVER (PARTITION BY exam_id ORDER BY timestampdiff(second,start_time, submit_time) DESC)  as fastrank,
        DENSE_RANK() OVER (PARTITION BY exam_id ORDER BY timestampdiff(second,start_time, submit_time)) as slowrank
    FROM
        exam_record
),

a1 AS(
    SELECT
        exam_id,
        finish as finish1
    FROM
        a
    WHERE
        fastrank = 2
),

a2 AS(
    SELECT
        exam_id,
        finish as finish2
    FROM
        a
    WHERE
        slowrank = 2
)

SELECT
    exam_id,
    duration,
    release_time
FROM
    a1
JOIN 
    a2 USING(exam_id)
JOIN
    examination_info USING(exam_id)
WHERE
    abs(finish1 - finish2) > duration*60/2
ORDER BY
    exam_id DESC

全部评论

相关推荐

点赞 评论 收藏
分享
已run的小章鱼很安静:跟他说毕业证学位证双证拿出来一个他单亲Null,拿两个他双亲是Null
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务