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))
相关推荐
B站_计算机毕业设计之家4 小时前
基于大数据的短视频数据分析系统 Spark哔哩哔哩视频数据分析可视化系统 Hadoop大数据技术 情感分析 舆情分析 爬虫 推荐系统 协同过滤推荐算法 ✅
大数据·hadoop·爬虫·spark·音视频·短视频·1024程序员节
洛克大航海9 小时前
集群环境安装与部署 Hadoop
大数据·hadoop·ubuntu·集群部署 hadoop
笨蛋少年派15 小时前
Hadoop High Availability 简介
大数据·hadoop·分布式
SeaTunnel1 天前
(二)从分层架构到数据湖仓架构:数据仓库分层下的技术架构与举例
大数据·数据仓库·数据分析·数据同步
数智顾问1 天前
Hive数据仓库架构原理深度解析与核心实践指南
数据仓库
二进制_博客1 天前
sqoop从hive导出mysql常见错误汇总
hive·mysql·sqoop
hzp6662 天前
spark动态分区参数spark.sql.sources.partitionOverwriteMode
大数据·hive·分布式·spark·etl·partitionover
那我掉的头发算什么2 天前
【数据库】navicat的下载以及数据库约束
android·数据库·数据仓库·sql·mysql·数据库开发·数据库架构
yumgpkpm2 天前
CMP(类ClouderaCDP7.3(404次编译) )完全支持华为鲲鹏Aarch64(ARM),粉丝数超过200就开源下载
hive·hadoop·redis·mongodb·elasticsearch·hbase·big data
励志成为糕手3 天前
Hive数据仓库:架构原理与实践指南
大数据·数据仓库·hive·1024程序员节·hql