网络维护网站美工,学生简单个人主页模板,福建建设厅网站,网站建设技术服务合同目录 中位数的概念代码实现准备数据实现 中位数的概念
中位数#xff08;Median#xff09;又称中值#xff0c;统计学中的专有名词#xff0c;是按顺序排列的一组数据中居于中间位置的数#xff0c;代表一个样本、种群或概率分布中的一个数值#xff0c;其可将数值集合… 目录 中位数的概念代码实现准备数据实现 中位数的概念
中位数Median又称中值统计学中的专有名词是按顺序排列的一组数据中居于中间位置的数代表一个样本、种群或概率分布中的一个数值其可将数值集合划分为相等的上下两部分。对于有限的数集可以通过把所有观察值高低排序后找出正中间的一个作为中位数。如果观察值有偶数个通常取最中间的两个数值的平均数作为中位数。
代码实现
准备数据
with temp as (select 13 as num union all select 23 as num union all select 7 as num union all select 30 as num union all select 56 as num union all select 78 as num union all select 100 as num union all select 3 as num )实现
方法1使用hive自带函数 分析最中间的两个数为23和30均值为26.5
select percentile(num, 0.5) from temp; ----26.5方法2正排倒排来一遍法
select avg(num)
from
(select num ,row_number() over(order by num) as rn1,row_number() over(order by num desc) as rn2from temp
)as t
where rn1 rn2 or abs(rn1-rn2) 1方法3充分利用窗口函数
select avg(num)
from
(select num ,row_number() over(order by num) as rn ,count(*) over() as nfrom temp
)as t
where rn in (floor(n/2)1,if(mod(n,2) 0,floor(n/2),floor(n/2)1))