hive常见习题解析
- 已有shop_id,item_id,num三列, 使用HiveSQL计算得到a,b列(温馨提示: 按照shop_id分组, a为num值/每组num的和, b为a的组内排序)
解析:
建表
create table shops(
shop_id char(1),
item_id char(1),
num int
);
插入数据
Insert into shops values
("A","a",10),
("A","b",12),
("B","a",8),
("A","c",5),
("B","c",8),
("C","b",9);
查询:
select shop_id,item_id,num,
num/sum(num) over (distribute by shop_id) a,
rank() over (distribute by shop_id sort by num desc)b
from shops;
- 使用hive计算num列的sum值
解析: 需结合侧视图使用行转列函数explode
建表
create table test2(
item char(1),
num int
stored textfile;
插入数据
insert into valuse
("A",1,2,3,4),
("B",2,5,1);
查询:
select item,num,sum(tmp.c) sum from test2
lateral view explode(split(num,",")) tmp as c
group by item,num;