hive中按照一个字段的区间进行统计

1. question

给定一个hive表tmp,表中有一个字段result(double型);给定一个区间分类个数m,统计每个区间内的count(*)的数量。

2. answer

在linux终端下,

# step1 设定区间分类个数,此处设置为10
m=10

# step2 求解字段 result 的最大值和最小值
section=`hive -e "
select max(result) as max_num,
       min(result) as min_num
from  tmp
"`
max_num=`echo -e "${section}" | cut -f1`
min_num=`echo -e "${section}" | cut -f2`

# step3 求解区间的长度
len_section=`hive -e "
select (${max_num} - ${min_num}) / ${m}
from   dual
"`

# step4 统计每个区间的个数
hive -e "
select ${min_num} + floor((result - ${min_num}) / ${len_section}) * ${len_section} as section_flag,
       count(*) as num  
from   tmp
"

最后的运行结果

0.0     1197
0.1     1587
0.2     1495
0.3     981
0.4     1074
0.5     947
0.6     424
0.7     173
0.8     114
0.9     59
1.0     2
  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值