题解 | #最差是第几名(二)#
最差是第几名(二)
http://www.nowcoder.com/practice/165d88474d434597bcd2af8bf72b24f1
当某一数的正序和逆序累计均大于整个序列的数字个数的一半即为中位数
例如 A A A B B C C D D F 1 2 3 4 5 6 7 8 9 10 正序 10 9 8 7 6 5 4 3 2 1 逆序 上面的5 6 和6 5 就是中位数,即B C 如果是奇数的话那么就是一个
select grade
from
(select grade,
(select sum(number) from class_grade) as total, --求出总的个数
sum(number) over(order by grade) as a, --求出正序
sum(number) over(order by grade desc) as b --求出逆序
from class_grade)as t
where a >= total/2 and b >=total/2 --判定条件
order by grade;