hive表小练习

news2025/5/30 15:50:46

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

-- 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.coloradmin.cn/o/1902637.html

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

相关文章

【Python学习】流程控制、函数与类详解

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想&#xff0c;就是为了理想的生活! 引言 Python作为一门强大而又简洁的编程语言&#xff0c;提供了丰富的工具和结构来帮助开发者编写清晰、高效的代码。在本文中…

解决Linux环境Qt报“cannot find -lgl“问题

今天&#xff0c;在Ubuntu 18.04.6环境下&#xff0c;安装Qt5.14.2之后&#xff0c;运行一个QWidget工程&#xff0c;发现Qt报"cannot find -lgl"错误。     出现这种现象的原因&#xff1a;Qt的Path路径没有配置&#xff0c;缺少libqt4-dev依赖包和一些必要的组件…

算法题-回文子串和最长回文子序列

算法题-回文子串和最长回文子序列 一、647. 回文子串二、516. 最长回文子序列 一、647. 回文子串 中等 给你一个字符串 s &#xff0c;请你统计并返回这个字符串中 回文子串 的数目。 回文字符串 是正着读和倒过来读一样的字符串。 子字符串 是字符串中的由连续字符组成的一个…

基于SpringBoot的招聘信息管理系统的详细设计和实现(源码+lw+部署文档+讲解等,欢迎咨询我!!)

文章目录 目录 文章目录 详细视频展示&#xff1a; 系统具体实现效果&#xff08;看看我的实力&#xff09; 技术栈&#xff08;详细的描述提供给同学思路参考&#xff09; 2.1 Java语言介绍 2.2 B/S架构 2.3 MySQL 数据库介绍 2.4 MySQL环境配置 2.5 SpringBoot框…

14-24 剑和侠客 – 预训练模型三部曲1 - 文本

在这个三部曲中&#xff0c;我们旨在从三个部分深入研究预训练模型&#xff1a;文本、图像和机器人。 我们旨在探索它们的概念、出现以及这些模型的工作原理。还将研究预训练模型的不同架构和类型。 探索哪些是最强大的&#xff0c;以及预训练模型和 Transformers 是否是 LLM…

【学术会议征稿】2024年工业自动化与机器人国际学术会议(IAR 2024)

2024年工业自动化与机器人国际学术会议&#xff08;IAR 2024&#xff09; 2024 International Conference on Industrial Automation and Robotics 2024年工业自动化与机器人国际学术会议&#xff08;IAR 2024&#xff09;将于2024年10月18-20日在新加坡隆重召开。会议将围绕…

提升系统稳定性:熔断、降级和限流策略详解

文章目录 前言一、熔断&#xff08;Circuit Breaker&#xff09;二、降级&#xff08;Degradation&#xff09;三、限流&#xff08;Rate Limiting&#xff09;四、应用案例五、小结推荐阅读 前言 随着互联网业务的快速发展&#xff0c;系统稳定性和高可用性成为现代分布式系统…

Linux wget报未找到命令

wget报未找到命令需要安装wget 1、下载wget安装文件&#xff0c;本次于华为云资源镜像下载 地址&#xff1a;https://mirrors.huaweicloud.com/centos-vault/7.8.2003/os/x86_64/Packages/ 2、下载后上传到安装服务器/install_package&#xff0c;执行命令安装 rpm -ivh /i…

idea创建的maven项目pom文件引入的坐标报红原因

如下所示 我们在引入某些依赖坐标的时候&#xff0c;即使点击了右上角的mavne刷新之后还是报红。 其实这是正常现象&#xff0c;实际上是我们的本地仓库当中没有这些依赖坐标&#xff0c;而idea就会通过报红来标记这些依赖来说明在我们的本地仓库是不存在的。 那有的同学就会…

JavaScript主要用途和方向

JavaScript是一种广泛使用的编程语言&#xff0c;可以用于开发各种类型的应用程序&#xff0c;包括Web应用程序、桌面应用程序、移动应用程序和游戏等。以下是博主整理的JavaScript可以做的一些事情&#xff1a; 1. Web开发&#xff1a; JavaScript是Web开发的核心语言之一&…

接口自动化测试思路和实战(5):【推荐】混合测试自动化框架(关键字+数据驱动)

混合测试自动化框架(关键字数据驱动) 关键字驱动或表驱动的测试框架 这个框架需要开发数据表和关键字。这些数据表和关键字独立于执行它们的测试自动化工具&#xff0c;并可以用来“驱动&#xff02;待测应用程序和数据的测试脚本代码&#xff0c;关键字驱动测试看上去与手工测…

构建滑块组件_第 2 部分

本篇我们继续学习滑块组件&#xff0c;让我们把滑块组件构建的更好&#xff1b; ● 首先&#xff0c;我们想要获取组件的三个点&#xff0c;首先在获取到他的HTML元素 const dotContainer document.querySelector(.dots);● 接着遍历 slides 数组&#xff0c;并在动态创建 元…

系统测试-缺陷管理学习

目录 1、什么是缺陷 2、缺陷的类型 3、缺陷的交付物 4、缺陷报告的基本格式 1、什么是缺陷 就是软件最终的功能实现跟需求不一致的现象就是缺陷 2、缺陷的类型 做少了&#xff0c;做错了&#xff0c;做多了&#xff0c;做差了 3、缺陷的交付物 缺陷报告&#xff1a;也叫…

贝尔曼方程(Bellman Equation)

贝尔曼方程(Bellman Equation) 贝尔曼方程(Bellman Equation)是动态规划和强化学习中的核心概念,用于描述最优决策问题中的价值函数的递归关系。它为状态值函数和动作值函数提供了一个重要的递推公式,帮助我们计算每个状态或状态-动作对的预期回报。 贝尔曼方程的原理 …

冯诺依曼体系结构与操作系统(Linux)

文章目录 前言冯诺依曼体系结构&#xff08;硬件&#xff09;操作系统&#xff08;软件&#xff09;总结 前言 冯诺依曼体系结构&#xff08;硬件&#xff09; 上图就是冯诺依曼体系结构图&#xff0c;主要包括输入设备&#xff0c;输出设备&#xff0c;存储器&#xff0c;运算…

基于机器学习(支持向量机,孤立森林,鲁棒协方差与层次聚类)的机械振动信号异常检测算法(MATLAB 2021B)

机械设备异常检测方法流程一般如下所示。 首先利用传感器采集机械运行过程中的状态信息&#xff0c;包括&#xff0c;振动、声音、压力、温度等。然后采用合适的信号处理技术对采集到机械信号进行分析处理&#xff0c;提取能够准确反映机械运行状态的特征。最后采用合理的异常决…

计算组的妙用!!页面权限控制

需求描述&#xff1a; 某些特殊的场景下&#xff0c;针对某页看板&#xff0c;需要进行数据权限卡控&#xff0c;但是又不能对全部的数据进行RLS处理&#xff0c;这种情况下可以利用计算组来解决这个需求。 实际场景 事实表包含产品维度和销售维度 两个维度属于同一公司下面的…

Redies基础篇(一)

Redis 是一个高性能的key-value数据库。Redies支持存储的value类型相对更多&#xff0c;包括string(字符串)、list(链表)、set(集合)和zset(有序集合)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作&#xff0c;而且这些操作都是原子性的&#xff…

FreeRTOS——事件标志组

一、事件标志组 前面所介绍的队列、信号量&#xff0c;只能实现与单个任务进行同步。而有时候某个任务可能需要与多个事件或任务进行同步&#xff0c;此时&#xff0c;事件标志组的作用就凸显出来 1.1 事件标志组简介 事件标志位&#xff1a;用一个位&#xff0c;来表示事件是…

【C语言小知识】缓冲区

缓冲区 当我们使用printf()将数据显示在屏幕上&#xff0c;或者使用scanf()函数将数据输入到电脑里&#xff0c;我们是否会产生些许疑问&#xff1f;为何输入的字符会直接显示到屏幕上等等。这里需要介绍一个C语言中的一个关键概念——缓冲区。 当我们使用老式系统进行运行代码…