Hive _偏门常用查询函数(一)附带实例(空字段赋值、 CASE WHEN、行转列)
生活随笔
收集整理的這篇文章主要介紹了
Hive _偏门常用查询函数(一)附带实例(空字段赋值、 CASE WHEN、行转列)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
空字段賦值
- 函數說明
NVL:給值為NULL的數據賦值,它的格式是NVL( string1, replace_with)。它的功能是如果string1為NULL,則NVL函數返回replace_with的值,否則返回string1的值,如果兩個參數都為NULL ,則返回NULL。
- 數據準備:采用員工表
?
- 查詢:如果員工的comm為NULL,則用-1代替
?
?CASE WHEN
數據準備:
悟空 A 男 大海 A 男 宋宋 B 男 鳳姐 A 女 婷姐 B 女 婷婷 B 女建表:
create table emp_sex( name string, dept_id string, sex string) row format delimited fields terminated by "\t"; load data local inpath "/root/emp_sex" into table emp_sex;要求:求出不同部門男女各多少人?
select dept_id,sum(case sex when '男' then 1 else 0 end) male_count,sum(case sex when '女' then 1 else 0 end) female_count from emp_sex group bydept_id;結果:
行轉列
1.相關函數說明
CONCAT(string A/col, string B/col…):返回輸入字符串連接后的結果,支持任意個輸入字符串;
CONCAT_WS(separator, str1, str2,...):它是一個特殊形式的 CONCAT()。第一個參數剩余參數間的分隔符。分隔符可以是與剩余參數一樣的字符串。如果分隔符是 NULL,返回值也將為 NULL。這個函數會跳過分隔符參數后的任何 NULL 和空字符串。分隔符將被加到被連接的字符串之間;
COLLECT_SET(col):函數只接受基本數據類型,它的主要作用是將某字段的值進行去重匯總,產生array類型字段。
2.數據準備
孫悟空 白羊座 A 大 射手座 A 宋宋 白羊座 B 豬八戒 白羊座 A 鳳姐 射手座 A創表:
create table person_info( name string, constellation string, blood_type string) row format delimited fields terminated by "\t"; load data local inpath "/root/con" into table person_info;需求:把星座和血型一樣的人歸類到一起
selectt1.base,concat_ws('|', collect_set(t1.name)) name from(selectname,concat(constellation, ",", blood_type) basefromperson_info) t1 group byt1.base;結果:
?
總結
以上是生活随笔為你收集整理的Hive _偏门常用查询函数(一)附带实例(空字段赋值、 CASE WHEN、行转列)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Hive _分桶及抽样查询
- 下一篇: MySQL主从复制能完美解决数据库单点问