在where里面模拟casewhen| #考试分数(五)#

考试分数(五)

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

with ranked as (select id, job, score, row_number() over (partition by job order by score DESC) as t_rank, count(id) over (partition by job) as cnt from grade)

select id, job, score, t_rank from ranked
where
    (cnt <= 2 and t_rank <= 2) or
    (cnt > 2 and cnt % 2 = 0 and (t_rank = cnt/2 or t_rank = cnt/2 +1)) or
    (cnt > 2 and cnt % 2 = 1 and t_rank = ceiling(cnt/2))

order by id

全部评论

相关推荐

06-27 12:30
延安大学 C++
实习+外包,这两个公司底层融为一体了,如何评价呢?
一表renzha:之前面了一家外包的大模型,基本上都能答出来,那面试官感觉还没我懂,然后把我挂了,我都还没嫌弃他是外包,他把我挂了……
点赞 评论 收藏
分享
亮点儿:昨天二面,今天看状态回到一面了查看图片
点赞 评论 收藏
分享
在喝茶的牛油很喜欢吃卤蛋:今天oc了
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

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