hive的 if函数和COALESCE函数
•If函数: if
if函数:
语法: if(boolean testCondition, T valueTrue, T valueFalseOrNull)
返回值: T
说明: 当条件testCondition为TRUE时,返回valueTrue;否则返回valueFalseOrNull
举例:
hive> select if(1=2,100,200);
hive> select if(1=1,100,200);
hive> select deptno,if(deptno=10,sal,comm) from mydb.emp;
在hive中利用if函数实现:
-----【例】统计每个部门的工资奖金情况,要求是10部门统计工资合计,其他部门统计奖金合计
select deptno,empno,if(deptno=10,sal,comm) from mydb.emp;
select deptno,sum(if(deptno=10,sal,comm)) as f from mydb.emp
group by deptno;
-----------------------------------------------------
非空查找函数 : COALESCE
COALESCE使用时和AS搭配使用,对于合并数据列非常有用。
语法: COALESCE(T v1, T v2,v3,v4,v5....)
返回值: T
说明: 返回参数中的第一个非空值;如果所有值都为NULL,那么返回NULL
举例:
hive> select COALESCE(null,'100','50') from dual;
场景一:类似nvl
hive> select empno, COALESCE(comm, 0) as comm from mydb.emp;
hive> select empno,nvl(comm, 0) as comm from mydb.emp;
场景二:非空查找
比如我们要登记用户的电话,数据库中包含他的person_tel,home_tel,office_tel,
我们只要取一个非空的就可以,则我们可以写查询语句
select COALESCE(person_tel,home_tel,office_tel) as contact_number from Contact;