Hive 常用查询操作

一.空字段赋值

1.函数说明
在这里插入图片描述
2.测试表如下
Hive 常用查询操作_第1张图片
3.如果某一列某一行的值为 null ,则用-1代替
Hive 常用查询操作_第2张图片
4.或者这样用
Hive 常用查询操作_第3张图片
当年份为 null 时,输出年份对应的地址:
Hive 常用查询操作_第4张图片

二.case when then end

这里新建一张表:
在这里插入图片描述
Hive 常用查询操作_第5张图片

select variety,
sum(case year when 1931 then 1 else 0 end) var_1931,
sum(case year when 1932 then 1 else 0 end) var_1932
from barley2
group by variety;

这里也可以写成 case when year=1931。
做到这种效果:
Hive 常用查询操作_第6张图片

三.行转列

在这里插入图片描述
这里有一张表:
Hive 常用查询操作_第7张图片
concat 函数:
Hive 常用查询操作_第8张图片
Hive 常用查询操作_第9张图片
Hive 常用查询操作_第10张图片

select collect_set(xingzuo) as AfterConcat from contract;

做到去重的效果
在这里插入图片描述
Hive 常用查询操作_第11张图片

select t1.c_b,collect_set(name)
from(select concat_ws(",",xingzuo,num) as c_b,name from contract) as t1
group by t1.c_b;

在这里插入图片描述

select t1.c_b,collect_set(name)[0]
from(select concat_ws(",",xingzuo,num) as c_b,name from contract) as t1
group by t1.c_b;

在这里插入图片描述

select t1.c_b,concat_ws("|",collect_set(name))
from(select concat_ws(",",xingzuo,num) as c_b,name from contract) as t1
group by t1.c_b;

在这里插入图片描述
目的达到。

四.列转行

列转行就是行转列的反过来啦~
在这里插入图片描述

持续更新~

你可能感兴趣的:(Hive)