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;

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Python酷库之旅-第三方库Pandas(008)

目录 一、用法精讲 16、pandas.DataFrame.to_json函数 16-1、语法 16-2、参数 16-3、功能 16-4、返回值 16-5、说明 16-6、用法 16-6-1、数据准备 16-6-2、代码示例 16-6-3、结果输出 17、pandas.read_html函数 17-1、语法 17-2、参数 17-3、功能 17-4、返回值…

element-ui输入框如何实现回显的多选样式?

废话不多说直接上效果&#x1f9d0; 效果图 <template><div><el-form:model"params"ref"queryForm"size"small":inline"true"label-width"68px"><el-form-item label"标签" prop"tag&q…

SSM高校教师教学质量评估系统-计算机毕业设计源码03344

摘要 在高等教育中&#xff0c;教学质量是培养优秀人才的关键。为了提高教学质量&#xff0c;高校需要建立一套科学、有效的教师教学质量评估系统。本研究采用 SSM技术框架&#xff0c;旨在开发一款高校教师教学质量评估系统。 SSM框架作为一种成熟的Java开发框架&#xff0c;具…

软件测试《用例篇》

测试用例 测试用例的概念 测试用例是被测试人员向被测试系统发起的一组集合&#xff0c;包括测试环境&#xff0c;操作步骤&#xff0c;预期结果&#xff0c;测试数据等 使用测试用例的好处 使用测试用例进行测试的好处主要有&#xff1a;提高测试效率&#xff0c;降低测试的重…

NextJs - SSR渲染解决antd首屏加载CSS样式的闪烁问题

NextJs - SSR渲染解决antd首屏加载CSS样式的闪烁问题 闪烁现状解决方案 闪烁现状 我们写一个非常简单的页面&#xff1a; import { Button } from antdexport default async function Page() {return <><Button typeprimary>AAA</Button></> }NextJs…

[答疑]EA中SysML块定义图的引用关联怎样在references分栏中出现

DDD领域驱动设计批评文集 做强化自测题获得“软件方法建模师”称号 《软件方法》各章合集 例如&#xff0c;用EA在BDD&#xff08;块定义图&#xff09;上画了一个关联&#xff1a; 此时&#xff0c;“手机”和“SIM卡”中都没有出现references栏。 右击“手机”&#xff0c…

Pytorch 实践手写数字识别深度学习网络 LeNet-5

Pytorch 实践手写数字识别深度学习网络 LeNet-5 文章目录 Pytorch 实践手写数字识别深度学习网络 LeNet-5认识 LeNet-5认识数据集处理数据集下载数据集读取数据定义Dataset的继承类把数据进行载入载入dataloader 编写网络编写训练与测试代码实践结果展示完整代码 训练手写体识别…

#数据结构 笔记一

数据结构是计算机存储、组织数据的方式。 数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。数据结构是带有结构特性的数据元素的集合&#xff0c;它研究的是数据的逻辑结构和物理结构以及它们之间的相互关系&#xff0c;并对这种结构定义相适应的运算&#xff0…

微软正在放弃React

最近&#xff0c;微软Edge团队撰写了一篇文章&#xff0c;介绍了微软团队如何努力提升Edge浏览器的性能。但在文中&#xff0c;微软对React提出了批评&#xff0c;并宣布他们将不再在Edge浏览器的开发中使用React。 我将详细解析他们的整篇文章内容&#xff0c;探讨这一决定对…

Java对象通用比对工具

目录 背景 思路 实现 背景 前段时间的任务中&#xff0c;遇到了需要识别两个对象不同属性的场景&#xff0c;如果使用传统的一个个属性比对equals方法&#xff0c;会存在大量的重复工作&#xff0c;而且为对象新增了属性后&#xff0c;比对方法也需要同步修改&#xff0c;不方…

微软拼音输入法不显示选字框问题

问题展示&#xff1a;不显示选字框 解决方式 打开兼容性即可&#xff08;估计是升级带来的bug&#xff09;

STM32 - 内存分区与OTA

最近搞MCU&#xff0c;发现它与SOC之间存在诸多差异&#xff0c;不能沿用SOC上一些技术理论。本文以STM L4为例&#xff0c;总结了一些STM32 小白入门指南。 标题MCU没有DDR&#xff1f; 是的。MCU并没有DDR&#xff0c;而是让代码存储在nor flash上&#xff0c;临时变量和栈…

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,…

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

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

STM32快速复习(八)SPI通信

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

3.js - 模板渲染 - 简单

3.js 真tm枯燥啊&#xff0c;狗都不学 效果图 源码 // ts-nocheck// 引入three.js import * as THREE from three// 导入轨道控制器 import { OrbitControls } from three/examples/jsm/controls/OrbitControls// 导入lil.gui import { GUI } from three/examples/jsm/libs/li…

【数据结构】09.树与二叉树

一、树的概念与结构 1.1 树的概念 树是一种非线性的数据结构&#xff0c;它是由n&#xff08;n>0&#xff09;个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看起来像一棵倒挂的树&#xff0c;也就是说它是根朝上&#xff0c;而叶朝下的。 根结点&#xff1a;根…

webGL可用的14种3D文件格式,但要具体问题具体分析。

hello&#xff0c;我威斯数据&#xff0c;你在网上看到的各种炫酷的3d交互效果&#xff0c;背后都必须有三维文件支撑&#xff0c;就好比你网页的时候&#xff0c;得有设计稿源文件一样。WebGL是一种基于OpenGL ES 2.0标准的3D图形库&#xff0c;可以在网页上实现硬件加速的3D图…

阶段三:项目开发---大数据开发运行环境搭建:任务2:安装配置ZooKeeper

任务描述 知识点&#xff1a;安装配置ZooKeeper 重 点&#xff1a; 安装配置ZooKeeper 难 点&#xff1a;无 内 容&#xff1a; ZooKeeper是一个开源分布式协调服务&#xff0c;其独特的Leader-Follower集群结构&#xff0c;很好的解决了分布式单点问题。目前主要用于诸…

IT之家最新科技热点 | 小米 AI 研究院开创多模态通用模型

人不走空 &#x1f308;个人主页&#xff1a;人不走空 &#x1f496;系列专栏&#xff1a;算法专题 ⏰诗词歌赋&#xff1a;斯是陋室&#xff0c;惟吾德馨 目录 &#x1f308;个人主页&#xff1a;人不走空 &#x1f496;系列专栏&#xff1a;算法专题 ⏰诗词歌…