第1关:计算每个班的语文总成绩和数学总成绩
任务:计算每个班的语文总成绩和数学总成绩,要求有哪科低于60
分,该名学生成绩不计入计算。
创建数据库:mydb
创建成绩表:score
字段名 | 类型 | 注释 |
---|---|---|
name |
string |
姓名 |
chinese |
string |
语文成绩 |
maths |
string |
数学成绩 |
部分数据如下:
banzhang,89,98
uanzhishu,99,89
数据切分方式:逗号
数据所在位置:/root/data/step1_files/score.txt
创建班级表:class
字段名 | 类型 | 注释 |
---|---|---|
stuname |
string |
姓名 |
classname |
string |
所在班级 |
部分数据如下:
xiaoming,c1
xiaohei,c2
数据切分方式:逗号
数据所在位置:/root/data/step1_files/class.txt
—— 预期输出 ——
c1 88.0 132.0
c2 99.0 155.0
c3 177.0 197.0
---------- 禁止修改 ----------
drop database if exists mydb cascade;
set hive.auto.convert.join = false;
set hive.ignore.mapjoin.hint=false;
---------- 禁止修改 ----------
---------- begin ----------
---创建mydb数据库
create database if not exists mydb;
---使用mydb数据库
use mydb;
---创建表score
create table if not exists score( name string comment '姓名',
chinese string comment '语文成绩',
maths string comment '数学成绩' ) row format delimited fields terminated by ',' stored as textfile;
---导入数据:/root/data/step1_files/score.txt
load data local inpath '/root/data/step1_files/score.txt' into table score;
--创建表class
create table if not exists class( stuname string comment '姓名',
classname string comment '所在班级' ) row format delimited fields terminated by ',' stored as textfile;
---导入数据:/root/data/step1_files/class.txt
load data local inpath '/root/data/step1_files/class.txt' into table class;
--计算每个班的语文总成绩和数学总成绩,要求有哪科低于60分,该名学生成绩不计入计算。
select t1.classname,t1.chinese,t2.maths from(select c.classname classname,sum(s.chinese) chinese from class c,score s where c.stuname=s.name and s.chinese>=60 group by c.classname) t1,(select c.classname classname,sum(s.maths) maths from class c,score s where c.stuname=s.name and s.maths>=60 group by c.classname) t2 where t1.classname=t2.classname;
quit;
---------- end ----------
第2关:查询选修了3门以上的课程的学生姓名
任务:查询选修了3
门以上的课程的学生姓名。
创建数据库:mydb
创建成绩表:my_stu