Hive的NULL值求和求平均
- sum(列1) : 这一列直接求和的时候遇到NULL值是会忽略不计的
- avg(列1) : 直接求平均值的时候遇到NULL值也是忽略不计,其他有值的正常计算
- 列1+列2:如果两列里有其中一列为NULL的话,那么结果就是为null的
- count(列1):如果列1里边有NULL的话是不进行计算的
- count(*) :在进行统计计数的时候,所有的列都进行计算,包括NULL也算
1-函数对NULL值的求和求平均
首先来看这段代码
with temp as
(select null as a
union all
select 111 as a
union all
select 222 as a
union all
select 333 as a
union all
select null as a
)
select sum(a),
avg(a),
min(a),
max(a)
from temp;
跑出来的结果为:
_c0 _c1 _c2 _c3
666 222.0 111 333
- sum(a): 当这一列里面有NULL值的时候,进行相加会把NULL忽略不计
- avg(a): 当这一列里面有NULL值的时候,进行相加会把NULL忽略不计
然后其他的值进行相加,在求平均 - min(a): 当这一列里面有NULL值的时候,进行相加会把NULL忽略不计取当前的数值最小值
- max(a) :正常取最大值
2-两列相加,其中一列有NULL值
create table temp(name string,pre_price int,last_price int);
insert into table temp values("apple",10,20);
insert into table temp values("orange",8,NULL);
insert into table temp values("bag",NULL,19);
insert into table temp values("hel",NULL,NULL);
建好的temp表数据如下
select * from temp
/*
name pre_price last_price
apple 10 20
orange 8 NULL
bag NULL 19
hel NULL NULL
*/
求两列相加的结果
select pre_price + last_price from temp;
/*
30
NULL
NULL
NULL
*/
结论
- sum(列1) : 这一列直接求和的时候遇到NULL值是会忽略不计的
- avg(列1) : 直接求平均值的时候遇到NULL值也是忽略不计,其他有值的正常计算
- 列1+列2:如果两列里有其中一列为NULL的话,那么结果就是为null的
- count(列1):如果列1里边有NULL的话是不进行计算的
- count(*) :在进行统计计数的时候,所有的列都进行计算,包括NULL也算