【大数据之Hive】十一、Hive-HQL查询之基本查询

news2024/11/26 8:44:08

基础语法

select [all | distinct] select_expr,select_expr, ...
    from table)name          --从什么表查
    [where where_condition]  --过滤
    [group by col_list]      --分组查询
    [having col_list]        --分组后过滤
    [order by col_list]      --排序
    [cluster by col_list | [distribute by col_list] [sort by col_list] ]
    [limit number];          --限制输出的行数

基本查询(select … from …)

原始数据:
  在/opt/module/hive/datas/下创建dept.txt文件和emp.txt文件

# dept.txt下字段为:部门编号 部门名称 部门位置id
vim dept.txt
10    行政部    1700
20    财务部    1800
30    教学部    1900
40    销售部    1700

#emp.txt下字段为:员工编号 姓名 岗位 薪资 部门
vim emp.txt
7369    张三    研发    800.00    30
7499    李四    财务    1600.00    20
7521    王五    行政    1250.00    10
7566    赵六    销售    2975.00    40
7654    侯七    研发    1250.00    30
7698    马八    研发    2850.00    30
7782    金九    \N    2450.0    30
7788    银十    行政    3000.00    10
7839    小芳    销售    5000.00    40
7844    小明    销售    1500.00    40
7876    小李    行政    1100.00    10
7900    小元    讲师    950.00    30
7902    小海    行政    3000.00    10
7934    小红明    讲师    1300.00    30

创建表并导入数据:

-- 创建部门表:
create table if not exists dept(
    deptnum int,    --部门编号
    dname string,    --部门名称
    locid int    --部门位置id
)
row format delimited fields terminated by '\t';

-- 创建员工表:
create table if not exists emp(
    empnum int,    --员工编号
    ename string,    --员工姓名
    job string,    --员工岗位
    sal double,    --员工薪资
    deptnum 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 全表和特定列查询

注意:
(1)SQL 语言大小写不敏感。
(2)SQL 可以写在一行或者多行。
(3)关键字不能被缩写也不能分行。
(4)各子句一般要分行写。
(5)使用缩进提高语句的可读性。

-- 全表查询:
selectr * from emp;

-- 选择特定列查询:
select empnum,ename from emp;

2 列别名

  重命名一个列,便于计算。
语法:

select old_col_name as new_col_name from tablename;
select old_col_name new_col_name from tablename;

如:

select ename as name,deptnum dn from emp;

3 limit语句

  查询返回多行数据,用limit限制返回的行数。

select * from emp limit 5;

--从第2行开始返回3行:
select * from emp limit 1,3;

4 where语句

  用where过滤不满足条件的行,只针对一行一行的数据,在from句后,且where句子不能用字段别名。

select * from emp where sal > 1000;

5 关系运算函数

  关系运算操作符主要用于where和having语句中。
在这里插入图片描述
对于模糊匹配like:用show查tables用通配符*,用select查表数据用通配符%。

6 逻辑运算函数

语法:
在这里插入图片描述

--查找薪水大于1000且部门是30的员工信息
select * from emp where sal > 1000 and deptnum = 30;

--查找薪水大于1000或部门是30的员工信息
select * from emp where sal > 1000 or deptnum = 30;

--查询除了部门2030以外的员工信息:
select * from emp where deptnum not in (30,20);

7 聚合函数

在这里插入图片描述

--求总行数(count):
select count(*) cnt from emp;

--求工资最大值(max):
select max(sal) max_sal from emp;

--求工资最小值:
select min(sal) min_sal from emp;

--求工资总和:
select sum(sal) sum_sal from emp;

--求工资平均值:
select avg(sal) avg_sal from emp;

在这里插入图片描述
在这里插入图片描述
sql语句翻译成MapReduce的执行计划,在Map端读入数据,在每个Map端上对读入的数据进行聚合,就减少了shuffle的数据量,然后将每个Map聚合之后的结果汇总到一个Reduce中,在Reduce上进行统计。

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

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

相关文章

基础知识学习---牛客网C++面试宝典(七)操作系统--第三节

1、本栏用来记录社招找工作过程中的内容,包括基础知识学习以及面试问题的记录等,以便于后续个人回顾学习; 暂时只有2023年3月份,第一次社招找工作的过程; 2、个人经历: 研究生期间课题是SLAM在无人机上的应…

从 数据工程 到 Prompt 工程

动动发财的小手,点个赞吧! 数据工程构成了数据科学过程的很大一部分。在 CRISP-DM 中,这个过程阶段称为“数据准备”。它包括数据摄取、数据转换和数据质量保证等任务。在本文[1]章中,我们使用 ChatGPT 和 Python 解决了典型的数据…

用HTML5制作精美战机游戏

每天要被大学老师催H5作业👏🏻👏🏻👏🏻 不如看看本文,代码齐全,直接用来做参考案例👌🏻 干货满满不看后悔👍👍👍 代码…

用友畅捷通CRM SQL注入漏洞复现

0x01 产品简介 用友畅捷通CRM是面向小企业全力打造的简单、实用的客户关系管理应用。帮助企业用好自己的客户资源、管好商机跟进过程、引导好业务员跟单行为,促进团队销售能力的提升;通过查询和分析,识别企业的价值客户,融合电话、…

JUC笔记(二)

多线程编程核心 在前面,我们了解了多线程的底层运作机制,我们终于知道,原来多线程环境下存在着如此之多的问题。在JDK5之前,我们只能选择synchronized关键字来实现锁,而JDK5之后,由于volatile关键字得到了…

湖南大学CS-2021期末考试解析

【特别注意】 答案来源于@wolf 是我在备考时自己做的,仅供参考,若有不同的地方欢迎讨论。 【试卷评析】 有必要一做。 【试卷与答案】 1.简答题(10 分) 小明设计了一款机器,整数和浮点数都占 10 个 bit,其中整数采用补码表示,浮点数采用 IEEE 754 标准。 (1)…

matlab横向连接字符组成文件路径

f fullfile(myfolder,myfile.tif) %字符串中不包含反斜杠 f strcat(myfolder\,myfile.tif) %字符串中包含反斜杠,strcat函数直接拼接得到的结果一致

【软件测试】测试用例设计要点总结

文章目录 考试题型简答题(一) 等价类划分1.1 划分等价类1.2 设计测试用例 (二) 边界值分析2.1 列出边界值分析表2.2 设计测试用例 (三) 因果图分析3.1 确定原因和结果3.2 确定原因和结果之间的逻辑关系3.3 在因果图上使用标准的符号标明约束条件 (四) 判定表驱动4.1 将因果图转…

【轻量化网络系列(7)】EfficientNetV2论文超详细解读(翻译 +学习笔记+代码实现)

前言 今天我们要学习的是EfficientNetV2 ,该网络主要使用训练感知神经结构搜索和缩放的组合;在EfficientNetV1的基础上,引入了Fused-MBConv到搜索空间中;引入渐进式学习策略、自适应正则强度调整机制使得训练更快;进一…

深入了解 OkHttp 协议:优雅的网络请求框架

😄作者简介: 小曾同学.com,一个致力于测试开发的博主⛽️,主要职责:测试开发、CI/CD 如果文章知识点有错误的地方,还请大家指正,让我们一起学习,一起进步。😊 座右铭:不想…

Spring Boot项目的搭建和运行

✨Spring Boot项目的搭建和运行 🍑Spring Boot概述🍊🍊传统框架技术存在的问题🍊🍊主要特点🍊🍊环境要求 🍑聚合工程/父子模块🍑第一个Spring Boot项目🍑目录…

《UNUX环境高级编程》(1)UNIX基础

1、引言 2、UNIX体系结构 操作系统 一种软件,控制计算机硬件资源,提供程序运行环境。操作系统包含了内核和一些其他软件(如shell、公用函数库、应用程序等)。例如Linux就是GNU操作系统的内核,因此也称为GNU/Linux操作…

Netty实战(十五)

UDP广播事件(一)UDP简介和示例程序 一、UDP基础1.2 UDP介绍1.2.1 UDP和TCP的区别 1.3 UDP广播1.3.1 单播模式1.3.2 UDP的传输模式 二、UDP示例程序三、消息 POJO: LogEvent 一、UDP基础 到目前为止,我们已经见过的绝大多数的例子都使用了基于…

Android系统中最重要的一个组件【Framework】

Android Framework是Android系统中最重要的一个组件,它为Android应用开发者提供了一套完整而稳定的API框架,可以方便地实现各种应用功能。Android市场对Framework的需求量非常大,尤其在当前移动互联网时代,Android应用的市场需求也…

SpringCloud Alibaba-Nacos

SpringCloud Alibaba-Nacos 1. Nacos安装1.1 Nacos概要1.2 Nacos架构1.3 Nacos安装1.3.1 单机模式 Derby安装1.3.2 单机模式 MySQL安装1.3.3 Docker 安装Nacos 2 Nacos功能应用2.1 Nacos服务注册与发现2.2 负载均衡2.3 配置中心2.3.1 配置管理2.3.2 多环境切换2.3.3 共享/扩展 …

Spark集群部署和启动与关闭

上一篇我们讲了Hadoop集群部署和启动与关闭,今天我们讲一下Spark集群部署和启动与关闭。首先我们先来了解一下Spark集群部署模式,分别有以下三种: Standalone   Standalone(独立模式)是Spark一种简单的集群部署模式&…

随着用户体验质量的不断追求,性能优化成了Android开发中的重要一方面

在移动互联网时代,Android系统的使用越来越广泛,而随着用户对体验质量的不断追求,性能优化已经成为了Android应用开发中的重要方面。以下是对Android市场对性能优化的需求量及应用广度进行详细分析的几个方面。 1. 用户需求 随着Android系统…

DataLeap的全链路智能监控报警实践(三): 系统实现

系统实现 整体架构 基线 管理模块:负责基线创建、更新、删除等操作,管理基线元信息,包括保障任务,承诺时间,余量及报警配置等); 基线 实例生成:系统每天定时触发生成基线实例&#x…

2023 年最新互联网 Java 面试八股文出炉(附大厂 P5-P8 技术栈)

为什么感觉 Java 面试变难了? 几年前,你只需要简单的 ssm 框架,就能轻松找到一份 Java 的工作,但现在不一样了,随着涌入这个行业的人越来越多,同一个岗位需要筛选掉更多人,要求自然水涨船高&am…

ubuntu 20.04 aarch64 平台交叉编译 opencv 静态库

编译环境 win10 64 位 VMware Workstation Pro 16 虚拟机 虚拟机安装 ubuntu 20.04 opencv 版本: 来自 github 当前最新 4.7 目的 交叉编译 opencv 生成静态库(.a),用于 嵌入式 aarch64 平台。 环境配置方法 参考上一篇 u…