题解 | 最差是第几名(二)
# 1.获取每个区间的开始和结束范围 # 2.根据得到的总和求得中位数 # 3.如果中位数落在区间的开始和结束范围内,则输出该区间 select grade from ( select grade,sum(number) over () cnt,sum(number) over (order by grade)-number+1 start,sum(number) over (order by grade) end from class_grade ) a where floor((cnt+1)/2) between start and end or (ceil((cnt+1)/2) between start and end)