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 北京

相关推荐

已老实求offer😫:有点像徐坤(没有冒犯的意思哈)
点赞 评论 收藏
分享
10-24 13:36
门头沟学院 Java
Zzzzoooo:更新:今天下午有hr联系我去不去客户端,拒了
点赞 评论 收藏
分享
58 10 评论
分享
牛客网
牛客企业服务