题解 | #最差是第几名(二)#
最差是第几名(二)
http://www.nowcoder.com/practice/165d88474d434597bcd2af8bf72b24f1
匹配区间的思路
计算每个grade的下的数量范围的闭区间和中位数的位置,匹配后可查询出结果
select grade
from (select grade, (sum(number) over(order by grade) - number + 1) as start_num,
sum(number) over(order by grade) as end_num,
(select floor(( SUM(number) + 1 )/ 2 ) from class_grade) AS start_t,
(select floor(( SUM(number) + 2 )/ 2 ) from class_grade) AS end_t
from class_grade) t1
where (start_t >= start_num and start_t <= end_num) or
(end_t >= start_num and end_t <= end_num)