Hive练习

一、创建表

1.创建students表

创建表
create table students(
    id bigint comment '学生id',
    name string comment '学生姓名',
    age int comment '学生年龄',
    gender string comment '学生性别',
    clazz string comment '学生班级'
) comment '学生信息表'
row format delimited fields terminated by ',';

在这里插入图片描述

上传数据到hdfs上
hdfs dfs -put students.txt /user/hive/warehouse/test1.db/students

在这里插入图片描述

2.创建score表

创建表
create table score(
    id bigint comment '学生id',
    score_id bigint  comment '科目id',
    score int comment '学生成绩'
) comment '学生成绩表'  
row format delimited fields terminated by ',';

在这里插入图片描述

上传数据到hdfs上
hdfs dfs -put score.txt /user/hive/warehouse/test1.db/score

在这里插入图片描述

3.创建subject表

创建表
create table subject( 
	subject_id bigint comment '课程id',
	subject_name string comment '课程名'
)comment '课程表' 
row format delimited fields terminated by ',';

在这里插入图片描述

上传数据至hdfs上
hdfs dfs -put subject.txt /user/hive/warehouse/test1.db/subject

在这里插入图片描述

4.查看三张表数据

在这里插入图片描述

二、练习

查询学生分数(输出:学号,姓名,班级,科目id,科目名称,成绩)
select t1.id
      ,t1.name
      ,t1.clazz
      ,t2.score_id
      ,t3.subject_name
      ,t2.score
from students t1
left join score t2
on t1.id=t2.id
left join subject t3
on t2.score_id=t3.subject_id
limit 10;

在这里插入图片描述

查询学生总分(输出:学号,姓名,班级,总分)
select t1.id
      ,t1.name
      ,t1.clazz
      ,t2.sum_score
from students t1
left join(
      select id
               ,sum(score)as sum_score
      from score
      group by id
      )t2 on t1.id=t2.id
limit 10;

在这里插入图片描述

查询全年级总分排名前三(不分文理科)的学生(输出:学号,姓名,班级,总分)
select t1.id
	   ,t1.name
	   ,t1,clazz
	   ,t2.sum_score
from students t1
left join(
	select id
	      ,sum(score) as sum_score
	from score
	group by id		  
) t2 on t1.id=t2.id
order by t2.sum_score desc
limit 3;

在这里插入图片描述

查询文科一班学生总分排名前10的学生(输出:学号,姓名,班级,总分)
select t1.id
      ,t1.name
      ,t1.clazz
      ,t2.sum_score
from students t1
left join(
      select id
      		,sum(score)as sum_score
      from score
      group by id
      ) t2 on t1.id=t2.id
where t1.clazz='文科一班'
 order by t2.sum_score desc
limit 10;

在这里插入图片描述

查询每个班级学生总分的平均成绩(输出:班级,平均分)
select tt1.clazz
	   ,avg(tt1.sum_score)as avg_sum_score
from (
	select t1.clazz
			,t2.sum_score
	from students t1
	left join(
    	select id
    		  ,sum(score)as sum_score
    	from score
    	group by id
    ) t2 on t1.id=t2.id
) tt1 group by tt1.clazz;

在这里插入图片描述

查询每个班级的最高总分(输出:班级,总分)
select tt1.clazz
		,max(tt1.sum_score) as max_sum_score
from(
	select t1.clazz
			,t2.sum_score
	from student t1
	left join(
   		select id
   			 ,sum(score)as sum_score
   		from score
   		group by id	
   ) t2 on t1.id=t2.id
)tt1 group by tt1.clazz;

在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值