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;

posted @ 2022-05-08 19:21  潜摩羯  阅读(1852)  评论(0编辑  收藏  举报