hive中如何求取中位数?

目录

中位数的概念

中位数(Median)又称中值,统计学中的专有名词,是按顺序排列的一组数据中居于中间位置的数,代表一个样本、种群或概率分布中的一个数值,其可将数值集合划分为相等的上下两部分。对于有限的数集,可以通过把所有观察值高低排序后找出正中间的一个作为中位数。如果观察值有偶数个,通常取最中间的两个数值的平均数作为中位数。

代码实现

准备数据

sql 复制代码
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

sql 复制代码
select percentile(num, 0.5) from temp;   ----26.5

方法2:正排倒排来一遍法

sql 复制代码
select avg(num)
from 
(
    select num 
        ,row_number() over(order by num) as rn1
        ,row_number() over(order by num desc) as rn2
    from temp
)as t 
where rn1 = rn2 or abs(rn1-rn2) = 1

方法3:充分利用窗口函数

sql 复制代码
select avg(num)
from 
(
    select num 
        ,row_number() over(order by num) as rn 
        ,count(*) over() as n
    from temp
)as t 
where rn in (floor(n/2)+1,if(mod(n,2) = 0,floor(n/2),floor(n/2)+1))
相关推荐
心疼你的一切28 分钟前
解锁CANN仓库核心能力:从零搭建AIGC轻量文本生成实战(附代码+流程图)
数据仓库·深度学习·aigc·流程图·cann
秃了也弱了。2 小时前
StarRocks:高性能分析型数据仓库
数据仓库
心疼你的一切3 小时前
数字智人:CANN加速的实时数字人生成与交互
数据仓库·深度学习·aigc·交互·cann
心疼你的一切3 小时前
语音革命:CANN驱动实时语音合成的技术突破
数据仓库·开源·aigc·cann
心疼你的一切3 小时前
解构CANN仓库:AIGC API从底层逻辑到实战落地,解锁国产化AI生成算力
数据仓库·人工智能·深度学习·aigc·cann
心疼你的一切4 小时前
基于CANN仓库算力手把手实现Stable Diffusion图像生成(附完整代码+流程图)
数据仓库·深度学习·stable diffusion·aigc·流程图·cann
心疼你的一切4 小时前
代码革命:CANN加速的AI编程助手实战
数据仓库·深度学习·aigc·ai编程·cann
心疼你的一切5 小时前
三维创世:CANN加速的实时3D内容生成
数据仓库·深度学习·3d·aigc·cann
心疼你的一切5 小时前
药物发现革命:CANN加速的AI分子生成与优化系统
数据仓库·人工智能·深度学习·aigc·cann
TTBIGDATA1 天前
【Atlas】Atlas Hook 消费 Kafka 报错:GroupAuthorizationException
hadoop·分布式·kafka·ambari·hdp·linq·ranger