今天在一个面试群里,发现了这张图片,是hive 笔试题,要求用HQL 语句,将上方的表变成下方的表

建表语句
create table stu1(
name string,
subject string,
score int
) ROW FORMAT DELIMITED FIELDS TERMINATED BY ' ';
数据
Tom Chinese 96
Tom Math 61
Tom English 85
Lucy Chinese 53
Lucy English 100
Lily Math 45
Lily English 60
Tony Chinese 23
查看完整数据

HQL语句
第一步,用concat 将subject 和 score 连接起来
select name,concat(subject,':',score) base from stu1;
结果如下 
第二步,用collect_set 将 第一步整好的base 列进行整合
select t.name, collect_set(t.base) subject_score from
(select name,concat(subject,':',score) base from stu1) t
group by t.name;
结果如下
 达到了相要的效果。
重点考察基础问题
|