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;