# 先找到中位数的初始位置
# 注意round是四舍五入
with t1 as (
    select (case when MOD(sum(number), 2) = 0 then round(sum(number)/2, 0) else round(sum(number)/2, 0) end ) as start
    from class_grade
),
t2 as (
    select grade, number, sum(number) OVER (ORDER BY grade) as total_number
    from class_grade
),
# 找到中位数的结束位置
t5 as (
    select (case when MOD(sum(number), 2) = 0 then round(sum(number)/2, 0)+1 else round(sum(number)/2, 0) end ) as end
    from class_grade
),
t6 as (
# 找到中位数开始的成绩
    select grade
    from t2
    where total_number >= (
        select start
        from t1
    )
    limit 1
),
t7 as (
# 找到中位数结束的成绩
    select grade
    from t2
    where total_number >= (
        select end
        from t5
    )
    limit 1
)
# 结合中位数的开始以及结尾
select grade
from t6
union
select grade
from t7