Hive的NULL值求和与求平均

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也算

你可能感兴趣的:(大数据Hive,hive)