1. 程式人生 > 其它 >hive的 if函式和COALESCE函式

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;