hive函数之聚合函数

627 阅读2分钟

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

上一篇文章介绍了hive函数中的avg、percentile和percentile_approx这几种聚合函数,本文继续介绍几种聚合函数,包括count、sum,这两个函数非常重要并且实用,我敢保证这几个函数在日常的sql开发中一定会用到,因为这就是统计数量和求和的。

聚合函数

1、count 统计函数 作用:统计行条数

常见使用方法 :count(),count(expr),count(DISTINCT expr[, expr *.])

具体功能描述:日常需要将一张竖表转换为一张横表的时候,就可以用到count,一般会搭配着group by一起使用。比如统计某一个维度数据的行条数总和,就可以写成count(expr),并且将其他select里面的字段都要group by起来,否则会报错。该函数的返回结果类型是int ,count()的方式会默认统计包括 NULL 值的行,count(expr) 会返回指定字段的非空值的个数;其中也可以对字段做去重处理,count(DISTINCT expr[, expr*.]) 就是返回指定字段的不同的非空值的个数。

也可以结合临时表的逻辑,先在临时表中将需要统计的新字段行数汇总出来,再最后group by中按组分类后count汇总出来。

select count(*) from test;     -- 对T不去重计数  
>>   10   
select count(distinct t) from test; -- 对T去重后计数  
>>   8select count(distinct t),f,g from test group by f,g; -- 对T去重后计数  ,按照f和g分组汇总
>>   12

2、sum 求和函数 作用:对字段求和

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

具体功能描述:sum(col) 该函数的功能就是将col这一列字段的结果集数据相加在一起,该字段的返回结果类型为double ,这个不支持去重处理,但是这个函数的另外一种写法sum(DISTINCT col) ,这是会在统计结果中 对col 的不同值相加获得最后的结果,并且sum函数也是可以结合group by一起使用,作为分组汇总。

select sum(*) from test;      -- 对T不去重求和  
>>   66   
​
select sum(distinct t) from test; -- 对T去重后求和  
>>   52select sum(distinct t),time from test group by time; -- 对T去重后求和  ,按照time分组
>>   100