1.If函數:if和case差不多,都是處理單個列的查詢結果 語法: if(boolean testCondition, T valueTrue, T valueFalseOrNull) 返回值: T 說明: 當條件testCondition為TRUE時,返回valueTrue;否則返回valueFalseOrNull 舉例:if(條件表達式,結果1,結果2)相當於java中的三目運算符,只是if后面的表達式類型可以不一樣。 hive> select if(a=a,’bbbb’,111) from lxw_dual; bbbb hive> select if(1<2,100,200) from lxw_dual; 200 hive (bigdata)> select if(1>2,10,20) > ; OK _c0 20 hive (bigdata)> select COALESCE(null,10,20); OK _c0 10 Time taken: 0.076 seconds, Fetched: 1 row(s) 2.非空查找函數: COALESCE 語法: COALESCE(T v1, T v2, …) 返回值: T 說明: 返回參數中的第一個非空值;如果所有值都為NULL,那么返回NULL hive> select COALESCE(null,’aaa’,50)from lxw_dual; aaa 3.條件件判斷函數:這種CASE A和if差不多,條件查詢(常用) 語法: CASE a WHEN b THEN c [WHENd THEN e]* [ELSE f] END 返回值: T 說明:如果a等於b,那么返回c;如果a等於d,那么返回e;否則返回f 舉例: hive> Select case 100 when 50 then 'tom'when 100 then 'mary' else 'tim' end from lxw_dual; mary hive> Select case 200 when 50 then 'tom'when 100 then 'mary' else 'tim' end from lxw_dual; tim 4.條件判斷函數:這種case,case后面沒有表達式,用於處理單個列的查詢結果 語法: CASE WHEN a THEN b [WHEN cTHEN d]* [ELSE e] END 返回值: T 說明:如果a為TRUE,則返回b;如果c為TRUE,則返回d;否則返回e 舉例: hive> select case when 1=2 then 'tom'when 2=2 then 'mary' else 'tim' end from lxw_dual; mary hive> select case when 1=1 then 'tom'when 2=2 then 'mary' else 'tim' end from lxw_dual; tom 實戰演示:case匹配的結果屬於一個新的字段 select * from ( select name ,id ,case when id <=1235 then 'low salary' when id >1235 and id <=1236 then 'middle' else 'very high' end from mytest_staff_info_demo4_cp1 where statis_date='20180228') b 查詢結果: name id _c2 'account1' 1234 low salary 'account2' 1235 low salary 'account3' 1235 low salary 'account4' 1236 middle 'account5' 1237 very high SELECT COUNT(1) FROM (SELECT * FROM udata TABLESAMPLE (200 ROWS)) x; SELECT * FROM udata TABLESAMPLE (50 PERCENT); select * from table_name where col=xxx order by rand() limit num; SELECT * FROM lxw1 TABLESAMPLE (30M);