当前位置: 首页 > news >正文

hive中如何求取中位数?

目录

  • 中位数的概念
  • 代码实现
    • 准备数据
    • 实现

中位数的概念

中位数(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))
http://www.lryc.cn/news/260724.html

相关文章:

  • 在C#中异步编程
  • 微服务保护--Feign整合Sentinel
  • 二进制to十六进制
  • Logistic 回归算法
  • ubuntu安装详细步骤
  • 力扣5. 最长回文子串
  • 肆[4],函数VectorToHomMat2d/AffineTransPoint2d
  • 下载文件 后端返回给前端 response header 响应头
  • lvs负载均集群
  • luttuce(RedisTempate)实现hash expire lua脚本
  • 【Xamarin】WebView连接局域网自动跳转外部浏览器问题的解决
  • 【Unity动画】实现不同的肢体动作自由搭配播放Layer+Avatar Mask
  • 将0x06(16进制)转换为二进制
  • 考PRINCE2有用么?有PMP证书了还需要考PRINCE2吗?
  • 06进程间关系-学习笔记
  • Vue的动画方式有几种
  • PyTorch: 基于【VGG16】处理MNIST数据集的图像分类任务【准确率98.9%+】
  • 【lombok】从easyExcel read不到值到cglib @Accessors(chain = true)隐藏的大坑
  • 1-SaaS通识
  • Spring Boot实现接口幂等
  • ShopsN commentUpload 文件上传漏洞复现
  • 【Qt5】ui文件最后会变成头文件
  • 数组笔试题解析(下)
  • PPT插件-好用的插件-图形缩放-大珩助手
  • 五:爬虫-数据解析之xpath解析
  • 什么是Laravel?它有哪些特性?
  • [足式机器人]Part2 Dr. CAN学习笔记-自动控制原理Ch1-3燃烧卡路里-系统分析实例
  • 安恒明御安全网关 aaa_local_web_preview文件上传漏洞复现
  • 基于ssm企业人事管理系统的设计与实现论文
  • 你知道为什么要加 final 关键字了吗?