Hive,相关任务查询作业

这篇具有很好参考价值的文章主要介绍了Hive,相关任务查询作业。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、前提准备,在自己的hive中创建这些表:

课程表名:  kc  

表字段:kcid,kc,tcid

成绩表名: sc

表字段:sid,kcid,score

学生信息表名: student

表字段:sid,sname,sage,ssex

教师表名: teacher 

表字段:tcid,tcname

2、相关信息

2.1、 sc

01,01,80
01,02,90
01,03,99
02,01,70
02,02,60
02,03,80
03,01,80
03,02,80
03,03,80
04,01,50
04,02,30
04,03,20
05,01,76
05,02,87
06,01,31
06,03,34
07,02,89
07,03,98

2.2、 student

01,zhaolei,nan
02,qiandian,nan
03,sunfeng,nan
04,liyun, nan
05,zhoumei,nv
06,wulan,nv
07,zhengzhu,nv
08,wangju,nv

2.3、teacher

01,zhanglaoshi
02,lilaoshi
03,wanglaoshi

2.4、 kc

01,语文,02
02,数学,01
03,英语,03

3、习题讲解

3.1、习题1.查询每门课授课教师姓名

select kc.kc,teacher.tcname  from  teacher join kc on teacher.tcid=kc.tcid;

3.2、习题2查询"01"课程比"02“课程成绩高的学生的信息及课程分数(注意起别名,才能够区别表并进行三表联立)

答案1:select student.* ,sc1.score from sc sc1 join student on sc1.sid=student.sid and sc1.kcid='01'

join sc on sc.sid=student.sid and sc.kcid='02' where sc1.score>sc.score;

答案2:select s.*,s1.score 1score ,s2.score 2score from student s, sc s1, sc s2 where s.sid = s1.sid and s.sid= s2.sid and s1.kcid ='01' and s2.kcid = '02' and s1.score > s2.score;

3.3、习题3.查询平均成绩大于等于60分的同学的学生编号和学生姓名和平均成绩(注意group by 后面的字段和前面查询的字段相同、group by 和having知识点)

select sc.sid,student.sname,avg(sc.score) from sc join student on sc.sid=student.sid  group by sc.sid,student.sname having avg(sc.score)>=60;

3.4、习题4.查询平均成绩小于60分同学的学生编号姓名和平均成绩(注意group by 后面的字段和前面查询的字段相同、group by 和having知识点)

select sc.sid,student.sname,avg(sc.score) from sc join student on sc.sid=student.sid group by sc.sid,student.sname having avg(sc.score)<60;

3.5、习题5.查询所有同学的学生编号、学生姓名、选课总数、所有课程的总成绩(group by 和order by 相关知识点以及left左连接,如果有null值可以使用coalesce函数)

答案1:select student.sid,student.sname,count(sc.kcid),sum(sc.score)  from student left join sc on student.sid=sc.sid group by  student.sid, student.sname order by student.sid,student.sname;

答案2:SELECT student.sid, student.sname, COUNT(sc.kcid), COALESCE(SUM(sc.score), 0)
FROM student
LEFT JOIN sc ON student.sid = sc.sid
GROUP BY student.sid, student.sname
ORDER BY student.sid, student.sname;

3.6、习题6.查询“李"姓老师的数量(注意匹配老师姓名是‘李%’)

select count(teacher.tcname)   from  teacher where tcname  like  '李%';

3.7、习题7.查询学过“zhang"老师授课的同学的信息(四张表连立,现有student表和sc表连立,然后再和kc表连立起来,最后再和teacher表联立得出最终结果)

select  student.* ,sc.kcid, sc.score  from sc join student on sc.sid=student.sid  join kc on kc.kcid=sc.kcid    

join teacher on kc.tcid=teacher.tcid where    teacher.tcname   like '张%';

3.8、习题8.查询学过编号为"01"并且也学过编号为"02"的课程的同学的信息习题(注意在查询的时候给表起别名,方便多表联立查询)

select student.*  

from student

 join sc  sc1 on student.sid=sc1.sid and sc1.kcid='01'

 join sc on sc1.sid=sc.sid and sc.kcid='02'; 

3.9、习题9.查询学过编号为"01"但是没有学过编号为"02"的课程的同学的信息习题(和前面那道题不同的是,最后加一个where筛选语句)

select student.* ,sc.kcid

from student

join sc sc1 on student.sid=sc1.sid and sc1.kcid='01'

left join sc on sc1.sid=sc.sid and sc.kcid = '02' where sc1.kcid = '01' and sc.kcid is null;

3.10、习题10.检索"01"课程分数小于60,按分数降序排列的学生信息

select  student.*  ,sc1.score  from  student join sc  sc1 on student.sid=sc1.sid and sc1.kcid='01' 

 and sc1.score<60 order by sc1.score desc; 

3.11、习题11.查询没有学全所有课程的同学的信息

答案1:

select student.* from student

left join sc on student.sid=sc.sid

group by student.sid ,student.sname ,student.sage,student.ssex

having count(sc.kcid)<3;

答案2:

SELECT st.* FROM student st LEFT JOIN sc sc1 ON sc1.sid=st.sid AND sc1.kcid='01' LEFT JOIN sc sc2 ON sc2.sid=st.sid AND sc2.kcid='02' LEFT JOIN sc sc3 ON sc3.sid=st.sid AND sc3.kcid='03' WHERE sc1.score IS NULL OR sc2.score IS NULL OR sc3.score IS NULL;

3.12、习题12.查询至少有一门课与学号为‘01’ 的同学所学相同的同学的信息

答案1:

select * from student

where student.sid in

(select sc1.sid from sc sc1 where kcid in

(select sc.kcid from sc where sc.sid="01") and student.sid!='01') ;

distinct:去重作用

答案2

select distinct student.* from student

stu1 where student.sid on stu1.sid=sc.sid in

(select sc1.sid from sc sc1 where kcid in

(select sc.kcid from sc where sc.sid="01") and student.sid!='01') ;

3.13、习题13.查询和‘01’号的同学学习的 课程完全相同的其他同学的信息(执行顺序)

select student.* from (select sc2.sid from sc sc1

join sc sc2 on sc1.kcid=sc2.kcid

join student on student.sid=sc1.sid

where sc1.sid=1 and sc2.sid!=1

group by

sc2.sid

having count(sc2.kcid)=3)a join student on student.sid=a.sid ;

3.14、习题14.查询没学过‘张三’老师讲授的任一门课程的学生姓名(作业,周一晚上发!!!!)

答案2:

select * from student where student.sid not in

(select distinct sc.sid from sc inner join

(select kc.kcid from kc inner join teacher t on kc.tcid = t.tcid where t.tcname = '张老师') t1

on sc.kcid = t1.kcid );

3.15、习题15.查询两门及其以上不合格课程的同学的学号,姓名及其平均成绩

研究后再发...文章来源地址https://www.toymoban.com/news/detail-480300.html

附录:有什么不对的地方请指正,或者有更好的解法。不懂的也可以在评论区交流哦。

到了这里,关于Hive,相关任务查询作业的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 不讨论颜色的前提下,如何证明自己不是色盲?神奇的零知识证明

    《阿里巴巴与四十大盗》中有这样一段小故事: 阿里巴巴会芝麻开门的咒语,强盗向他拷问打开山洞石门的咒语,他不想让人听到咒语,又要向强盗证明他知道这个咒语。 那应该怎么办呢? 便对强盗说:「你们离我一箭之地,用弓箭指着我,你们举起右手,我念咒语打开石

    2024年02月02日
    浏览(35)
  • mysql创建student表并使用视图查询的相关练习

    Steps: 1.用SQL语句创建学生表student,定义主键,姓名不能重名,性别只能输入男或女,所在系的默认值是 “计算机”。 2.修改student 表中年龄(age)字段属性,数据类型由int 改变为smallint。 3.为SC表建立按学号(sno)和课程号(cno)组合的升序的主键索引,索引名为SC_INDEX 。

    2024年02月09日
    浏览(34)
  • 【环境搭建】Docker镜像相关操作(切换镜像源、查询、获取、查看、创建、上传、保存、删除等)

    docker默认镜像源位于国外,下载速度较慢,建议修改配置文件daemon.json,若无则新建。 使用命令查看镜像源: cat /etc/docker/daemon.json ,如果没有该文件或没有配置,则镜像源位于国外。 建议修改配置文件修改镜像源为国内,使用命令 vim /etc/docker/daemon.json 打开文件进行修改。

    2024年02月05日
    浏览(41)
  • SNMP 计算机网络管理 实验2(二) SNMP服务与常用网管命令之任务三:对同学的计算机进行网络管理 任务四:查询计算机网卡的相关信息

    ⬜⬜⬜ 🐰🟧🟨🟩🟦🟪(*^▽^*)欢迎光临 🟧🟨🟩🟦🟪🐰⬜⬜⬜ ✏️write in front✏️ 📝个人主页:陈丹宇jmu 🎁欢迎各位→点赞👍 + 收藏⭐️ + 留言📝​ 🙉联系作者🙈by QQ:813942269🐧 🌈致亲爱的读者:很高兴你能看到我的文章,希望我的文章可以帮助到你,祝万事

    2024年02月12日
    浏览(61)
  • Hive 分区表 (Partitioned Tables) 『 创建分区表 | CRUD分区 | 修复分区 | 数据导入(静态分区、动态分区) | 查询数据/表结构』

    条件:假如现有一个角色表 t_all_hero ,该表中有6个清洗干净的互不干扰的数据文件:射手、坦克、战士、法师、刺客、辅助 要求:查找出名字为射手且生命值大于6000的角色人数 惯性解决方法:按照MySQL思维很容易想到 问:如何提高效率?这样虽然能够解决问题,但是由于要

    2024年02月04日
    浏览(74)
  • PaddleOCR训练自己模型(1)----数据准备

    PaddleOCR开源代码(下载的是2.6RC版本的,可以根据自己需求下载) 具体环境安装就不详细介绍了, 挺简单的,也挺多教程的。 二、数据集准备及制作 (1)下载完代码及配置完环境之后,运行PPOCRLabel.py文件,打开标注软件( 2.7版本的会运行报错,解决方案如下 )解决PPOCR

    2024年04月16日
    浏览(45)
  • HBase相关面试准备问题

    1、海量存储 Hbase适合存储PB级别的海量数据,在PB级别的数,能在几十到几百毫秒内返回数据。这与Hbase的极易扩展性息息相关。正是因为Hbase良好的扩展性,才为海量数据的存储提供了便利。 2、列式存储 这里的列式存储其实说的是列族存储,Hbase是根据列族来存储数据的。

    2024年02月22日
    浏览(44)
  • 勤于奋讲解国外LEAD做任务前的准备

    欢迎关注勤于奋 每天12点准时更新国外LEAD相关技术 今天跟大家分享一些做国外LEAD一些资源,就是做国外LEAD前IP的检查,有人不是很清楚,今天分享一些检查工具。 第一个当然是whoer,这个工具我用的最多,很早的时候就使用它,当然这个工具也有他的价值。 这个工具我觉得

    2024年02月07日
    浏览(43)
  • 离散数学大作业任务书

    目   录 实际的练习题目、系统的总功能和各子模块的功能………………………………………………………………………………1 1.1题目及问题描述………………………………………………………………1 1.2功能概述………………………………………………………………………

    2024年02月10日
    浏览(45)
  • AIGC: 关于ChatGPT中API接口调用相关准备工作

    ChatGPT之API接口相关 通过页面和GPT交流获取信息相比直接调用GPT的API而言是非常有限的 页面上的GPT是比较封闭的,而且只允许我们去输入文本的信息 我们需要借助GPT的API开发来激发AI工具的无限可能,实现更多个性化需求 1 ) 使用API 使用API有一个前置的条件 注册ChatGPT账号

    2024年02月04日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包