题解 | #最差是第几名(二)#又臭又长的代码来咯

最差是第几名(二)

https://www.nowcoder.com/practice/165d88474d434597bcd2af8bf72b24f1

# 先找到中位数的初始位置
# 注意round是四舍五入
with t1 as (
    select (case when MOD(sum(number), 2) = 0 then round(sum(number)/2, 0) else round(sum(number)/2, 0) end ) as start
    from class_grade
),
t2 as (
    select grade, number, sum(number) OVER (ORDER BY grade) as total_number
    from class_grade
),
# 找到中位数的结束位置
t5 as (
    select (case when MOD(sum(number), 2) = 0 then round(sum(number)/2, 0)+1 else round(sum(number)/2, 0) end ) as end
    from class_grade
),
t6 as (
# 找到中位数开始的成绩
    select grade
    from t2
    where total_number >= (
        select start
        from t1
    )
    limit 1
),
t7 as (
# 找到中位数结束的成绩
    select grade
    from t2
    where total_number >= (
        select end
        from t5
    )
    limit 1
)
# 结合中位数的开始以及结尾
select grade
from t6
union
select grade
from t7

全部评论

相关推荐

LuvSran:是人我吃。老师就是学校呆久了,就业方面啥都不懂,还自以为是为了我们就业好。我学校就一破双非,计科入行率10%都没有,某老师还天天点名,说是出勤率抬头率前排率高了,华为什么的大厂就会来,我们就是不好好上课才没有厂来招。太搞笑了
点赞 评论 收藏
分享
自来熟的放鸽子能手面...:这个不一定,找hr跟进一下
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

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