分组求中位数 select c.age,avg(r.AMOUNT) as AMOUNT from (select a.age ,a.AMOUNT,(select count(1) from testzhongweishu where age=a.age and (AMOUNT<a.AMOUNT or AMOUNT=a.AMOUNT )) as Num from testzhong。
难度:困难
一、题目描述:
二、解题分析:
1、
使用大根堆和小根堆
假想我们现在有两个容器 A, B 这两个容器将我们的整体数据分成两部分,且 A 中的数据都小于 B 中的数据,并且 A 中的最后一个数据是 A 里面最大的
B 的第一个数据是 B 中最小的.
好了 我们有了上面的条件,那我们怎么找到中位数呢?
当整体数目为奇数时,中间的那个数就是所求.当整体数目为偶数时,中间两个数的和再除以 2 ,就能得到结果
但这和我们上面的两个容器有什么关系呢?
我们只要将上面的