hive表小练习

-- 将对应的命令写在每个步骤中

-- 1.在hive中创建数据库school

create database if not exists school;

-- 2.在数据库school中创建如下的表 每张表的列分隔符都是,  存储格式是textfile

创建表名为student_info,
字段为stu_id 类型为string,注释为学生id
字段为stu_name 类型为string,注释为学生姓名
字段为birthday 类型为string,注释为出生日期
字段为sex 类型为string,注释为性别

create table if not exists school.student_info(stu_id string comment "学生id",stu_name string comment "学生姓名",birthday string comment "出生日期",sex string comment "性别")
comment "学生内部表"
row format delimited fields terminated by ','
stored as textfile
;

写入 /opt/sql/school/create_student.sql

beeline中执行

source /opt/sql/school/create_student.sql;


创建表名为course_info,
字段为course_id 类型为string,注释为课程id
字段为course_name 类型为string,注释为课程名
字段为tea_id 类型为string,注释为教师id

create table if not exists school.course_info(course_id string comment "课程id",course_name string comment "课程名",tea_id string comment "教师id")
comment "课程内部表"
row format delimited fields terminated by ','
stored as textfile
;

创建表名为teacher_info,
字段为tea_id 类型为string,注释为教师id
字段为tea_name 类型为string,注释为教师姓名

create table if not exists school.teacher_info(tea_id string comment "教师id",tea_name string comment "教师姓名")
comment "教师内部表"
row format delimited fields terminated by ','
stored as textfile
;


创建表名为score_info,
字段为stu_id 类型为string,注释为学生id
字段为course_id 类型为string,注释为课程id
字段为score 类型为int,注释为成绩

create table if not exists school.score_info(stu_id string comment "学生id",course_id string comment "课程id",score int comment "成绩")
comment "分数内部表"
row format delimited fields terminated by ','
stored as textfile
;


-- 3. 将对应的数据文件加载到对应的表中

数据

 文件存放在/opt/file/school_filem目录下

学生表数据
load data local inpath '/opt/file/school_file/student_info.txt' overwrite into table school.student_info;
课程表数据
load data local inpath '/opt/file/school_file/course_info.txt' overwrite into table school.course_info;
教师表数据
load data local inpath '/opt/file/school_file/teacher_info.txt' overwrite into table school.teacher_info;
分数表数据
load data local inpath '/opt/file/school_file/score_info.txt' overwrite into table school.score_info;

sql语句练习

---1.查询学生表中姓名带冰的学生信息

---模糊查询  %:表示匹配0-n个字符

select * from school.student_info where stu_name like '%冰%';

 ---2.查询学生表中以周为姓的学生信息
select * from school.student_info where stu_name like '周%';

---3.查询数学成绩不及格的学生及其对应的数学成绩,按照学号进行升序排序

        --1.在课程表中查询数学的课程id

                课程名与分数不在同一个表中,首先在course_info获取课程名的id

                select course_id from school.course_info where course_name='数学';

         --2.通过查询到的课程id去成绩表 中查询学生id和数学成绩的分数
             select stu_id,score from school.score_info 
             where course_id = (select course_id from school.course_info where              course_name='数学';)

        --3.通过查询到的学生id去学生表中查询对应的学生信息,根据学生id升序

                   目前查询到的仅仅是学生id和数学分数,获取学生的其他信息在学生表中

                    将1.2步的结果集与学生表连接

                              select t1.*,t2.score from school.student_info t1
                   inner join 
                              (select stu_id,score from school.score_info 
                                     where course_id = (select course_id from school.course_info where                                      course_name='数学';))
t2
                              on t1.stu_id = t2.stu_id
                              where t2.score < 60
                              order by t1.stu_id;

                inner join 是SQL中的一种连接操作,用于根据两个或多个表中的相关列来组合行。内连接只返回两个表中相互匹配的行。换句话说,它生成的结果集仅包含满足连接条件的记录,即两个表中指定列的值相等的行会被连接在一起。

-- 4.查询课程编号03的总成绩

select course_id,sum(score) as total_score from school.score_info where course_id='03' group by course_id;

-- 5.查询参加考试的学生人数 
--需要对记录数进行去重

select count(distinct stu_id) as count from school.score_info;

--6.查询各科成绩的最高分和最低分 最后显示课程编号 最高分 最低分


select course_id,max(score) as max_score,min(score) as min_score from school.score_info group by course_id;
 

--7.查询平均成绩大于60分的学生编号和对应的平均成绩

select stu_id,avg(score) as avg_score from school.score_info group by stu_id having avg(score) >60;
 

--8.查询平均成绩大于60分的学生姓名和对应的平均成绩

    --1.在成绩表中计算每个学生的平均成绩
    --2.关联学生表,获取学生姓名 筛选平均成绩 > 60的记录
    select t1.stu_name,t2.avg_score from school.student_info t1
     inner join
    select stu_id,avg(score) as avg_score from school.score_info group by stu_id t2
    on t1.stu_id = t2.stu_id
    where t2.avg_score > 60;
   

--9.按照学生id,语文成绩,数学成绩,英语成绩,平均成绩,有效课程数,进行查询
    
    --1.计算每个学生的语文成绩,数学成绩,英语成绩
    
    --2.计算每个学生的平均成绩
    
    --3.将上述的两个结果集进行关联

select 
    t1.stu_id,
    sum(if(t2.course_name='语文',score,0)) as `语文成绩`,
    sum(if(t2.course_name='数学',score,0)) as `数学成绩`,
    sum(if(t2.course_name='英语',score,0)) as `英语成绩`,
    avg(t1.score) as `平均成绩`,
    count(*) as `有效课程数`
from school.score_info t1
inner join school.course_info t2
on t1.course_id=t2.course_id
group by t1.stu_id;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1474224.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

PostgreSQL 如何优化存储过程的执行效率?

文章目录 一、查询优化1. 正确使用索引2. 避免不必要的全表扫描3. 使用合适的连接方式4. 优化子查询 二、参数传递1. 避免传递大对象2. 参数类型匹配 三、减少数据量处理1. 限制返回结果集2. 提前筛选数据 四、优化逻辑结构1. 分解复杂的存储过程2. 避免过度使用游标 五、事务处…

STM32快速复习(八)SPI通信

文章目录 前言一、SPI是什么&#xff1f;SPI的硬件电路&#xff1f;SPI发送的时序&#xff1f;二、库函数二、库函数示例代码总结 前言 SPI和IIC通信算是我在大学和面试中用的最多&#xff0c;问的最多的通信协议 IIC问到了&#xff0c;一般SPI也一定会问到。 SPI相对于IIC多了…

Apache Seata分布式事务原理解析探秘

本文来自 Apache Seata官方文档&#xff0c;欢迎访问官网&#xff0c;查看更多深度文章。 本文来自 Apache Seata官方文档&#xff0c;欢迎访问官网&#xff0c;查看更多深度文章。 前言 fescar发布已有时日&#xff0c;分布式事务一直是业界备受关注的领域&#xff0c;fesca…

批量文本编辑管理神器:一键修改多处内容,轻松转换编码,助力工作效率飞跃提升!

在信息爆炸的时代&#xff0c;文本处理已成为我们日常工作中不可或缺的一部分。无论是处理文档、整理数据还是编辑资料&#xff0c;都需要对大量的文本进行管理和修改。然而&#xff0c;传统的文本编辑方式往往效率低下&#xff0c;容易出错&#xff0c;难以满足现代工作的高效…

水箱高低水位浮球液位开关

水箱高低水位浮球液位开关概述 水箱高低水位浮球液位开关是一种用于监测和控制水箱中液位的自动化设备&#xff0c;它能够在水箱液位达到预设的高低限制时&#xff0c;输出开关信号&#xff0c;以控制水泵或电磁阀的开闭&#xff0c;从而维持水箱液位在一个安全的范围内。这类设…

做有一个有表情且会动的 Finder

作为一只合格的互联网巡回猎犬&#xff0c;今天给大家分享一个有趣且无聊的小工具&#xff0c;摸鱼发呆必备&#xff0c;可以说是一件「无用良品」了。 软件介绍 Mouse Finder 长的跟访达差不多&#xff0c;功能也一样&#xff0c;但有一个重要区别&#xff1a;眼睛会跟随鼠标…

图神经网络实战(16)——经典图生成算法

图神经网络实战&#xff08;16&#xff09;——经典图生成算法 0. 前言1. 图生成技术2. Erdős–Rnyi模型3. 小世界模型小结系列链接 0. 前言 图生成算法是指用于创建模拟图或网络结构的算法&#xff0c;这些算法可以根据特定的规则和概率分布生成具有特定属性的图&#xff0c…

Open3D 计算点云的粗糙度

目录 一、概述 二、代码实现 2.1 方法一 2.2方法二 三、实现效果 3.1原始点云 3.2计算后的点云 一、概述 点粗糙度&#xff08;Point Roughness&#xff09;是点云数据处理中一个重要的几何特征&#xff0c;它描述了一个点附近表面的平滑程度或不规则程度。计算点粗糙度…

硬件开发笔记(二十四):贴片电容的类别、封装介绍,AD21导入贴片电容、原理图和封装库3D模型

若该文为原创文章&#xff0c;转载请注明原文出处 本文章博客地址&#xff1a;https://hpzwl.blog.csdn.net/article/details/140241817 长沙红胖子Qt&#xff08;长沙创微智科&#xff09;博文大全&#xff1a;开发技术集合&#xff08;包含Qt实用技术、树莓派、三维、OpenCV…

【手写数据库内核组件】01 解析树的结构,不同类型的数据结构组多层的链表树,抽象类型统一引用格式

不同类型的链表 ​专栏内容&#xff1a; postgresql使用入门基础手写数据库toadb并发编程 个人主页&#xff1a;我的主页 管理社区&#xff1a;开源数据库 座右铭&#xff1a;天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君子以厚德载物. 文章目录 不同类型…

将大型语言模型模块化打造协作智能体

B UILDING C OOPERATIVE E MBODIED A GENTS MODULARLY WITH L ARGE L ANGUAGE M ODELS 论文链接&#xff1a; https://arxiv.org/abs/2307.02485https://arxiv.org/abs/2307.02485 1.概述 在去中心化控制及多任务环境中&#xff0c;多智能体合作问题因原始感官观察、高昂…

1、spring5.2.x源码解读之下载源码和编译

1、下载源码 1.1、git下载源码 git地址&#xff1a;https://gitcode.net/mirrors/spring-projects/spring-framework.git 1.2、源码导入idea 源码下载地址&#xff1a;https://gitcode.net/mirrors/spring-projects/spring-framework/-/archive/5.2.x/spring-framework-5.2…

LeetCode题练习与总结:直线上最多的点数--149

一、题目描述 给你一个数组 points &#xff0c;其中 points[i] [xi, yi] 表示 X-Y 平面上的一个点。求最多有多少个点在同一条直线上。 示例 1&#xff1a; 输入&#xff1a;points [[1,1],[2,2],[3,3]] 输出&#xff1a;3示例 2&#xff1a; 输入&#xff1a;points [[1,…

Golang | Leetcode Golang题解之第220题存在重复元素III

题目&#xff1a; 题解&#xff1a; func getID(x, w int) int {if x > 0 {return x / w}return (x1)/w - 1 }func containsNearbyAlmostDuplicate(nums []int, k, t int) bool {mp : map[int]int{}for i, x : range nums {id : getID(x, t1)if _, has : mp[id]; has {retu…

安卓备忘录App开发

安卓备忘录APP开发,文章末尾有源码和apk安装包 目标用户: 普通安卓手机用户,需要一个简单易用的备忘录App来记录和管理日常事务。 主要功能: 用户注册: 用户可以创建一个账号,输入用户名和密码。 用户登录: 用户可以通过用户名和密码登录到应用。 用户信息存储: 用户名和…

算法010:无重复字符的最长子串

无重复字符的最长子串. - 备战技术面试&#xff1f;力扣提供海量技术面试资源&#xff0c;帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。https://leetcode.cn/problems/longest-substring-without-repeating-characters/ 使用的算法&#xff1a;滑动窗口 在这个…

Qt/C++音视频开发78-获取本地摄像头支持的分辨率/帧率/格式等信息/mjpeg/yuyv/h264

一、前言 上一篇文章讲到用ffmpeg命令方式执行打印到日志输出&#xff0c;可以拿到本地摄像头设备信息&#xff0c;顺藤摸瓜&#xff0c;发现可以通过执行 ffmpeg -f dshow -list_options true -i video“Webcam” 命令获取指定摄像头设备的分辨率帧率格式等信息&#xff0c;会…

飞书 API 2-4:如何使用 API 将数据写入数据表

一、引入 上一篇创建好数据表之后&#xff0c;接下来就是写入数据和对数据的处理。 本文主要探讨数据的插入、更新和删除操作。所有的操作都是基于上一篇&#xff08;飞书 API 2-4&#xff09;创建的数据表进行操作。上面最终的数据表只有 2 个字段&#xff1a;序号和邮箱。序…

FairJob:促进在线广告系统公平性研究

在人工智能&#xff08;AI&#xff09;与人类动态的交汇处&#xff0c;既存在机遇也存在挑战&#xff0c;特别是在人工智能领域。尽管取得了进步&#xff0c;但根植于历史不平等中的持续偏见仍然渗透在我们的数据驱动系统中&#xff0c;这些偏见不仅延续了不公平现象&#xff0…

生成式AI的短板在于“Token”的存在

生成式AI模型处理文本的方式与人类不同。理解它们基于“token”的内部环境&#xff0c;可能有助于解释一些奇怪行为和固有局限性。 从小型设备上的Gemma到OpenAI领先行业的GPT-4o&#xff0c;大多数模型都是基于一种称为Transformer的架构。由于Transformer在将文本与其他类型…