题解 | #考试分数(五)#

考试分数(五)

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

SELECT 
    t1.id,
    t1.job,
    t1.score,
    t1.medium
FROM
    (SELECT
        *,
        RANK() OVER (PARTITION BY job ORDER BY score desc) as t_rank,
        CASE
            WHEN (COUNT(*) OVER (PARTITION BY job)) % 2 = 1 THEN ROUND((COUNT(*) OVER (PARTITION BY job) + 1) / 2,0)
            WHEN (COUNT(*) OVER (PARTITION BY job)) / 2 = (RANK() OVER (PARTITION BY job ORDER BY score desc))
            THEN RANK() OVER (PARTITION BY job ORDER BY score desc)
            WHEN (COUNT(*) OVER (PARTITION BY job)) / 2  + 1 = (RANK() OVER (PARTITION BY job ORDER BY score desc))
            THEN RANK() OVER (PARTITION BY job ORDER BY score desc)
        END AS medium
    FROM
        grade
    ) t1
where 
    t1.t_rank = t1.medium
order by
    t1.id

全部评论

相关推荐

mq2:我倒是觉得这种敞亮一点好。能接受就去不能就不去呗。 完了跟现在“正常”公司一样,hr说的天花乱坠,进去一看根本就是996核动力牛马,想走又没应届生身份了。岂不是更糟。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务