SQL 88) 最差是第几名(二)

最差是第几名(二)

http://www.nowcoder.com/questionTerminal/165d88474d434597bcd2af8bf72b24f1

参考大牛的解法,绝了

当某一数的正序和逆序累计均大于整个序列的数字个数的一半即为中位数

select grade
from
    (select grade,
    (select sum(number) from class_grade) as total,
    sum(number)over(order by grade) a, -- 求正序
    sum(number)over(order by grade desc) b  -- 求逆序
     from class_grade
    order by grade)t
where a >= total/2 and b >= total/2  -- 正序逆序均大于整个数列数字个数的一半
order by grade;
SQL 文章被收录于专栏

SQL

全部评论
如果总个数是偶数个的话,有两个中位数,且两个中位数的等级是一样的,按题目的意思不应该是输出两个麽,这个代码只会输出一个
1 回复 分享
发布于 2021-10-22 20:09
真的绝了,请收下我的膝盖
1 回复 分享
发布于 2021-07-12 09:51
select grade from (select grade,(select sum(number) from class_grade) as total, sum(number) over(order by grade) a, sum(number) over(order by grade desc) b from class_grade) t1 where a >= (total+1)/2 and b >=(total+1)/2 order by grade;中位数位置的公式应该是(total+1)/2
1 回复 分享
发布于 2021-11-04 16:37
求问,为什么(select sum(number) from class_grade) as total不能直接写sum(number) as total 呢?
点赞 回复 分享
发布于 2023-05-22 11:32 北京

相关推荐

HNU_fsq:建议直接出国,这简历太6了。自愧不如
点赞 评论 收藏
分享
10-15 09:13
已编辑
天津大学 soc前端设计
点赞 评论 收藏
分享
58 10 评论
分享
牛客网
牛客企业服务