任务描述
在之前的实训中,我们已经知道了
Hive
的单表查询,本关主要讲解如何进行多表查询。 本关任务:统计查询各班学习Python的人数。
相关知识
为了完成本关任务,你需要掌握:1.
hive
多表查询,2.
group by
分组函数的使用。
多表查询
之前的单表查询只是对一张表进行查询,而多表查询需要将两张及两张以上的表进行关联查询。 在多表查询中,通常使用 表名.列名 来对各表中的列进行查询操作。 例如:一张
info
表,一张
score
表
info
表
列名类型备注namestring姓名classstring班级
数据如下:
zhangsan,c1
lisi,c2
wangwu,c3
zhaoliu,c2
donger,c1
xiaolin,c3
xiaoxuan,c2
zhouhao,c1
niuliu,c3
score
表
列名类型备注namestring姓名scoreint分数
数据如下:
zhangsan,67
lisi,83
wangwu,57
zhaoliu,86
donger,63
xiaolin,75
xiaoxuan,92
zhouhao,71
niuliu,63
查询各班总成绩:
select info.class,sum(score.score) from info,score where info.name=score.name group by info.class;
查询结果如下:
编程要求
根据提示,在右侧编辑器补充代码,统计查询各班学习Python的人数。 创建
stu_info
表:
列名类型备注classstring班级namestring姓名sexstring性别professionstring专业
score
表:
列名类型备注classstring班级namestring姓名classidint课程Idscoreint分数
class
表:
列名类型备注classidint课程Idclassnamestring课程名
数据路径:
/data/workspace/myshixun/studentinfo.txt
/data/workspace/myshixun/class.txt
/data/workspace/myshixun/score.txt
数据切分方式均为:英文逗号
测试说明
平台会对你编写的代码进行测试! 预期输出: c1 3 c3 2
代码如下
create database if not exists info;
use info;
--创建stu_info表
create table stu_info(
class string,
name string,
sex string,
profession string)
row format delimited fields terminated by ","
lines terminated by "\n" stored as textfile;
--从本地导入数据到stu_info表中
load data local inpath "/data/workspace/myshixun/studentinfo.txt" overwrite into table stu_info;
--创建score表
create table score(
class string,
name string,
classid int,
score int)
row format delimited fields terminated by ","
lines terminated by "\n" stored as textfile;
--从本地导入数据到score表中
load data local inpath "/data/workspace/myshixun/score.txt" overwrite into table score;
--创建class表
create table class (
classid int,
classname string)
row format delimited fields terminated by ","
lines terminated by "\n" stored as textfile;
--从本地导入数据到class表中
load data local inpath "/data/workspace/myshixun/class.txt" overwrite into table class;
--查询各班学习Python的总人数
select score.class,count(score.classid) from score,class where class.classname=="Python" and class.classid=score.classid group by score.class;
版权归原作者 喜欢dollar 所有, 如有侵权,请联系我们删除。