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 rn2
    from 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 n
    from temp
)as t 
where rn in (floor(n/2)+1,if(mod(n,2) = 0,floor(n/2),floor(n/2)+1))

相关推荐

  1. hive如何位数

    2023-12-16 08:28:04       64 阅读
  2. sql位数

    2023-12-16 08:28:04       56 阅读
  3. 两个等长数组的位数

    2023-12-16 08:28:04       42 阅读
  4. Python数字位数的方法

    2023-12-16 08:28:04       59 阅读
  5. N个整数的平均数、众数和位数

    2023-12-16 08:28:04       31 阅读
  6. Civil 3d 三角网曲面二维和三维面积

    2023-12-16 08:28:04       29 阅读
  7. 如何截取Hive数组的前N个元素?

    2023-12-16 08:28:04       60 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-16 08:28:04       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-16 08:28:04       101 阅读
  3. 在Django里面运行非项目文件

    2023-12-16 08:28:04       82 阅读
  4. Python语言-面向对象

    2023-12-16 08:28:04       91 阅读

热门阅读

  1. ARM JTAG 调试原理

    2023-12-16 08:28:04       60 阅读
  2. 分布式文件存储系统minio了解下

    2023-12-16 08:28:04       61 阅读
  3. C 语言中,结构体「.」与「->」的区别

    2023-12-16 08:28:04       58 阅读
  4. react函数组件中Hooks和ahooks的区别

    2023-12-16 08:28:04       73 阅读
  5. 管道C语言(蓝桥杯题库,暴力解决)

    2023-12-16 08:28:04       59 阅读
  6. android项目实战之数据绑定的数据更新

    2023-12-16 08:28:04       57 阅读
  7. 智能网联汽车场景数据图像标注要求及方法

    2023-12-16 08:28:04       52 阅读
  8. he server selected protocol version TLS10 is not accepted问题

    2023-12-16 08:28:04       54 阅读
  9. Windows 10/11 免费安装HEVC/H.265视频扩展

    2023-12-16 08:28:04       221 阅读
  10. 大语言模型--数据

    2023-12-16 08:28:04       61 阅读
  11. MySQL 是什么?

    2023-12-16 08:28:04       55 阅读