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

最差是第几名(二)

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

全部评论

相关推荐

点赞 评论 收藏
分享
学java时间比较短不到三个月,基本的技术栈都过了一遍就是都不太深,有个小项目。是继续找实习还是沉淀准备秋招呢?找实习的话会花很多时间在八股,放弃的话又怕秋招简历太难看。有无大佬支招
今天java了吗:1.一定要找实习,实习不一定要去,但是找实习过程中的面试经验和心态经验才是最重要的 2.八股本来就是大头,甚至比项目重要 3.这个时间段也是面试比较多的阶段,可以抓住机会锻炼。面试才会发现自己的不足,感觉自己会了和能给面试官娓娓道来是两码事
点赞 评论 收藏
分享
05-13 02:01
已编辑
惠州学院 前端工程师
安静的少年在求佛:建议把公司名字写到标题。以后有人想搜就能直接搜到
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

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