3.Hive基础命令练习

news2024/11/24 4:40:44

创建表格如下:

部门表:

create table if not exists dept(
    deptno int,    -- 部门编号
    dname string,  -- 部门名称
    loc int        -- 部门位置
)
row format delimited fields terminated by '\t';

员工表:

create table if not exists emp(
    empno int,      -- 员工编号
    ename string,   -- 员工姓名
    job string,     -- 员工岗位(大数据工程师、前端工程师、java工程师)
    sal double,     -- 员工薪资
    deptno int      -- 部门编号
)
row format delimited fields terminated by '\t';

 将本地数据导入表格:

-- 导入数据
load data local inpath '/opt/module/hive/datas/dept.txt' into table dept;
load data local inpath '/opt/module/hive/datas/emp.txt' into table emp;

1.基本查询

起别名(as可省略):

select ename as name, sal salary from emp;

运算符:比如将查询的工资提升10元

select ename, sal + 10 from emp;

 常用函数:

select count(1) cnt,               -- 数据库表的行数,等于count(*)
       sum(sal) sum_sal,           -- 求和
       avg(sal) avg_sal,           -- 求平均
       min(sal) min_sal,           -- 最小值
       max(sal) max_sal            -- 最大值
from emp;

 ps.count(*)返回的是数据表的行数,而count(sal)返回的是行数-null的个数

ps.当sum/avg/min/max()的数据中存在null,会自动把null忽略

查询工资在800-1000的人:

select ename from emp where sal between 800 and 1000; //[800,1000]左闭右闭
select enmae from emp where sal>=800 and sal<=1000;

工资不在800-1000的人: 

select ename from emp where sal not between 800 and 1000;
select enmae from emp where not sal>=800 and sal<=1000;

limit:

-- 显示前5
select ename from emp limit 5;
-- 显示2-5名
select ename from emp limit 1,4;

模糊查询:

查询以张开头的人

-- 通配符
select * from emp where ename like "张%";

2.分组与过滤(group by & having)

ps.where只能筛选原始数据,而having可以筛选group by后的数据

查询各个部门的平均工资:

select deptno ,avg(sal) avg_sal from emp 
group by deptno;

查询平均工资大于2000的部门和其平均工资

select deptno, avg(sal) avg_sal from emp 
group by deptno 
having avg_sal>2000;

3.连接        

两表连接(默认就是内连接)

select emp.ename, dept.dname 
from emp inner join dept on emp.deptno = dept.deptno

ps.连接相当于把两张表左右拼接到了一起,拼接的条件就在on后面       

 多表连接:

select e.ename,
       d.dname,
       l.loc_name
from emp e
    right join dept d on e.deptno = d.deptno
    left join location l on d.loc = l.loc;

4.全局排序

按照工资从高到低排序

select * from emp order by sal desc;

先按照部门编号升序排序,相同部门按照工资降序排序 

select * from emp order by deptno asc, sal desc;

按照部门平均工资降序给部门排序 

select deptno , avg(sal) avg_sal from dept 
 group by deptno order by avg_sal desc;

为避免排序返回的结果太多,一般结合limit使用

 例:求薪资最高的5组数据

select * from emp order by sal desc limit 5;

内部逻辑:每个mapTask求出各自前五,然后reduceTask汇总mapTask,求出全局前五 

5.分区排序(用的少)

首先设置reduce的个数为3:

复习如何分三个区:除以三余数分别为0,1,2.

set mapreduce.job.reduces=3;

 将empno按照hash值分为3个区,区内按照工资的降序排序

select * from emp distribute by empno sort by sal desc;

cluster by:当distribute by和sort by字段相同且为升序时,可以用cluster by代替

select * from emp distribute by empno sort by empno;
等价于
select * from emp cluster by empno;

6.练习题

       编写一个SQL查询来报告 Person表中每个人的姓、名、城市和州。如果personId 的地址不在Address表中,则报告为空null

select firstname,lastname,city,state
from  person P 
left join address a on p.personId = a.personId;

解释:表格中的managerID对应的就是这个员工的经理的ID

查询收入比经理高的员工:

 select e.name   // 编程习惯:查询条件都是放到最后写

 from emplyee e

   join emplyee m on e.managerId = m.id
  
   where e.salary >= m.salary

 编写一个SQL查询,查找Person表中所有重复的电子邮箱

select  email
from Person group by email 
having count(1)>1;

编写一个SQL查询,找出所有从不订购任何东西的客户

select c.name
from Customers c 
left join Orders o  on c.id = o.customerId   //要保证所有customer留下来
where o.id is null; 

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

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

相关文章

AI 工具合辑盘点(十三)持续更新 之 面向宠物爱好者的 AI 工具和面向电影爱好者的 AI 工具

亲爱的宠物爱好者&#xff0c;这个部分是专门为你准备的。&#x1f43e; 不论你是爱狗人士还是铲屎官&#xff0c;AI 都能满足你。 访问地址&#xff1a; This Cat Does Not Exist 猫咪生成器 你知道喜欢猫的爱好有个专门的名字吗&#xff1f;在国外被称为ailurophilia&…

操作系统考试复习——第四章 对换 分页存储管理方式

对换技术也成为交换技术&#xff0c;由于当时计算机的内存都非常小&#xff0c;为了使该系统能分时运行多个用户程序而引入了对换技术。 1.对换的引入&#xff1a; 所谓“对换”&#xff0c;是指把内存中暂时不能运行的进程或者暂时不用的程序和数据调出到外存上&#xff0c;…

zk之数据的发布与订阅

数据的发布和订阅&#xff1a; &#xff08;1&#xff09;数据的发布与订阅是一个一对多的关系。多个订阅者对象同时监听某一个主题对象。这个主题对象在自身状态发生变化时&#xff0c;会通知所有的订阅者对象&#xff0c;使它们能够自动的更新自己的状态。发布和订阅可以让发…

SpringBoot项目修改application.yml,application-prod.yml配置文件中的端口,数据库链接等信息后,项目突然不能运行

SpringBoot项目修改application.yml&#xff0c;application-prod.yml配置文件中的端口&#xff0c;数据库链接等信息后&#xff0c;项目突然不能运行 问题记录 &#xff0c;SpringBoot项目修改application.yml&#xff0c;application-prod.yml配置文件中的端口&#xff0c;数…

跟姥爷深度学习5 浅用卷积网络做mnist数字识别

一、前言 前面用TensorFlow浅做了一个温度预测&#xff0c;使用的是全连接网络&#xff0c;同时我们还对网上的示例做了调试和修改&#xff0c;使得预测结果还能看。本篇我们更进一步使用CNN&#xff08;卷积&#xff09;网络&#xff0c;不过再预测温度就有点大材小用&#x…

Stable Diffusion Webui 本地部署【踩坑记录】

1、安装python Python Release Python 3.10.6 | Python.org 2、安装git git是一个代码管理工具&#xff0c;通过它可以将开源项目仓库克隆到本地 下载地址&#xff1a;Git - Downloading Package 3、下载stable-diffusion-webui 可以新建一个目录&#xff0c;在文件夹内单…

代数余子式怎么求

代数余子式是矩阵中每个元素的代数余数&#xff0c;可以通过以下步骤求得&#xff1a; 1. 找到该元素所在的行和列&#xff0c;将其删除&#xff0c;得到一个新的矩阵。 2. 计算新矩阵的行列式&#xff0c;乘以(-1)^(行号列号)&#xff0c;即为该元素的代数余子式。 例如 对…

vulnhub靶场之nasef1

1.信息收集 探测存活主机&#xff0c;发现192.168.239.176存活 对目标主机192.168.239.176进行端口扫描&#xff0c;发现存活22、80端口 浏览器访问http://192.168.239.176/&#xff0c;发现为apache2的页面&#xff0c;查看源码&#xff0c;未发现异常。 对http://192.16…

-笔记 tps qps

页面请求异步处理 将请求 扔进 kafka, Mq等 MQ单机抗几万并发也是ok的 底层批量处理 sql 处理 尽量批量处理&#xff0c;减少耗时 分库分表&#xff0c; 可能到了最后数据库层面还是免不了抗高并发的要求&#xff0c;好吧&#xff0c;那么就将一个数据库拆分为多个库&#xf…

Java ---System类

System 类位于 java.lang 包&#xff0c;代表当前 Java 程序的运行平台&#xff0c;系统级的很多属性和控制方法都放置在该类的内部。由于该类的构造方法是 private 的&#xff0c;所以无法创建该类的对象&#xff0c;也就是无法实例化该类。 System 类提供了一些类变量和类方…

PBDB Data Service:Thumbnail images of lifeforms(生命形式的缩略图)

Thumbnail images of lifeforms&#xff08;生命形式的缩略图&#xff09; 描述用法参数方法响应值格式术语表 描述 此操作返回表示指定分类的图像&#xff0c;或关于图像的信息。如果后缀是 .png&#xff0c;则返回图像内容数据。否则&#xff0c;将以指定的格式返回一个描述…

2023年全国硕士研究生入学统一考试英语(二)试题

2023年全国硕士研究生入学统一考试英语&#xff08;二&#xff09;试题 Section I Use of English Directions: Read the following text. Choose the best word ( s) for each numbered blank and mark A, B , C or D on the ANSWER SHEET. ( 10 points) Here’s a common …

OSS文件打包下载

前言 OSS 存放了很多项目&#xff08;项目是 TMagic 低代码平台编辑生成&#xff0c;自动上传 OSS&#xff09;&#xff0c;现在需要在管理后台将项目打包ZIP下载&#xff0c;并不在本地生成文件。 OSS 要下载项目文件&#xff1a; 一、思路实现 创建 OSSClient 实例获取 Bu…

K8s基础6——应用配置管理方案、调度策略、污点和污点容忍

文章目录 一、应用配置管理方案1.1 ConfigMap1.1.1 注入变量1.1.2 挂载数据卷 1.2 Secret 二、调度策略2.1 nodeSelector定向调度2.1.1 正例2.1.2 反例 2.2 nodeAffinity亲和力调度2.2.1 In硬策略2.2.2 NotIn硬策略2.2.3 软策略 2.3 PodAffinity亲和力调度2.3.1 pod共存2.3.2 p…

【机器学习】信息量、香农熵、信息增益

这节可以搭配 【机器学习】Logistic回归&#xff08;重新整理&#xff09;信息量&#xff08;信息&#xff09;信息量公式的推理过程 香农熵信息增益 【机器学习】Logistic回归&#xff08;重新整理&#xff09; B站视频&#xff1a;“交叉熵”如何做损失函数&#xff1f;打包…

RabbitMQ、RabbitMQ发布/订阅模式

1.RabbiMQ RabbitMQ是一个消息中间件 MQ的基本结构 1.1RabitMQ安装 参考&#xff1a;Docker安装 Docker中部署RabbitMQ 2.入门案例 2.1.publisher实现 package cn.itcast.mq.helloworld;import com.rabbitmq.client.Channel; import com.rabbitmq.client.Connection; im…

链表中倒数第k个结点

描述 输入一个链表&#xff0c;输出该链表中倒数第k个结点。 示例1 输入&#xff1a; 1,{1,2,3,4,5} 复制返回值&#xff1a; {5}看代码 struct ListNode* FindKthToTail(struct ListNode* pListHead, int k ) {struct ListNode* fast pListHead, *slow pListHead;whi…

Redis实现分布式锁详细解读

文章目录 什么是分布式锁&#xff1f;如何用Redis实现分布式锁&#xff1f;分布式锁的改进锁过期处理集群环境下Redis宕机问题RedLock的引入RedLock的实现步骤RedLock带来的弊端 什么是分布式锁&#xff1f; 我们在学多线程的时候遇到过ReetrantLock&#xff0c;这种锁主要应用…

node install编译失败原因

关键报错信息 npm ERR! gyp verb check python checking for Python executable "python2.7" in the PATH npm ERR! gyp verb which failed Error: not found: python2.7 或者 npm ERR! code ERESOLVE npm ERR! ERESOLVE could not resolve npm ERR! npm ERR! Whi…

车载以太网时间同步之EthTsync

车载以太网时间同步之EthTsync 前言 首先&#xff0c;请问大家几个小小问题&#xff0c;你清楚&#xff1a; 你知道EthTsync模块的主要作用是什么吗&#xff1f;EthTsync模块与其他AUTOSAR基础软件模块交互关系&#xff1b;Eth Tsync模块使用的时间同步协议是什么&#xff1f…