欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

Hive _偏门常用查询函数(一)附带实例(空字段赋值、 CASE WHEN、行转列)

发布时间:2024/2/28 编程问答 41 豆豆
生活随笔 收集整理的这篇文章主要介绍了 Hive _偏门常用查询函数(一)附带实例(空字段赋值、 CASE WHEN、行转列) 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

空字段赋值

  • 函数说明

NVL:给值为NULL的数据赋值,它的格式是NVL( string1, replace_with)。它的功能是如果string1为NULL,则NVL函数返回replace_with的值,否则返回string1的值,如果两个参数都为NULL ,则返回NULL。

  • 数据准备:采用员工表
01 george 100.00 02 george 0.00 03 george 0.00 04 george 110.00 05 george 170.00 06 kkkkk 180.00 07 george 0.00 08 george 90.00 09 didi

 

  • 查询:如果员工的comm为NULL,则用-1代替
create table emp(id int,name string,comm double) row format delimited fields terminated by ' ';load data local inpath "/root/emp" into table emp; select nvl(comm,-1) from emp;

 


 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、行转列)的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。