hive函数之聚合函数

602 阅读2分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第17天,点击查看活动详情

日常在做一些数据分析的时候,都会对数据进行计算,包括求和、统计数量,这次再介绍两种聚合函数,求平均值函数和百分位函数,这个在日常数据开发过程中也是非常有用的。

3、avg 平均值函数 作用:获取指定数据的平均值

常见使用方法:avg(col),avg(DISTINCT col)

具体功能说明:该函数可以对一列数据进行求平均数,并且返回的结果类型为double ,其中可以对列里面的数据进行去重和不去重两种情况分别进行求平均数。如果要统计结果中不同值相加的平均值,则要使用avg(DISTINCT col) 。 avg函数和其他的聚合函数一样,默认会过滤null值。

select avg(*) from test;      -- 对T不去重求平均值  
>>   66.0   
​
select avg(distinct t) from test; -- 对T去重后求平均值  
>>   65.0

4、percentile 分位数函数 作用:获取分位数的值

常见使用方法: percentile(BIGINT col, array(p1 [, p2]…)) , percentile_approx(BIGINT col, array(p1 [, p2]…),B)

具体功能说明:在我们做一些数量分析的时候,经常用到统计学的方法,而分位数函数就是一种,这个函数在excel中的操作也非常多。他可以获取到p值对应的分位数的值,其中这个p的取值范围必须是0~1之间。入参的类型必须是array ,返回的结果类型为double 。 col 字段目前只支持整数,不支持浮点数类型。

percentile_approx 函数是升级版,功能和上述类似,但是它可以多一个参数B,控制内存消耗的近似精度,所以这个B越大,结果的精度就越高。如果是要多个分位数,也可以一次性获取,那就是在array 中输入多个百分位数,返回类型也为 array,其中每一个位置上分别有对应的分位数值。

select percentile(t, array(  0.2  ,   0.3  ,   0.5  )) from test;  
>> [  48.0  ,  57.0  ,  65.0  ]
​
select percentile_approx(u, array(  0.2  ,   0.3  ,   0.5  ,0.8),9999) from test;  
>> [  1.0 ,  2.0 ,  3.0 ,4.0]
​