# 明确问题:中位数怎么求
# 思路来源大佬,仅是用于笔记,原版请看SunburstRun
# 首先要明确中位数的概念,就是取最中间的值,如果是奇数是1个中位数,
# 如果是偶数则是两个中位数,
# 又因为上题已经知道正序求和了,那么逆序求和只需加desc
# 然后再用总个数与正序、逆序对比,两个都大于总数/2的就是中位数区间
# 思路来源大佬,仅是用于笔记,原版请看SunburstRun
# 首先要明确中位数的概念,就是取最中间的值,如果是奇数是1个中位数,
# 如果是偶数则是两个中位数,
# 又因为上题已经知道正序求和了,那么逆序求和只需加desc
# 然后再用总个数与正序、逆序对比,两个都大于总数/2的就是中位数区间
- 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) s
- where a>=(total/2) and b>=(total/2)
- GROUP BY grade
- order by grade

京公网安备 11010502036488号