Hive基础知识(十二):Hive的基本查询

1. 全表和特定列查询

0)数据准备

原始数据

dept:
10 ACCOUNTING 1700
20 RESEARCH 1800
30 SALES 1900
40 OPERATIONS 1700
emp:
7369 SMITH CLERK 7902 1980-12-17 800.00 20
7499 ALLEN SALESMAN 7698 1981-2-20 1600.00 300.00 30
7521 WARD SALESMAN 7698 1981-2-22 1250.00 500.00 30
7566 JONES MANAGER 7839 1981-4-2 2975.00  20
7654 MARTIN SALESMAN 7698 1981-9-28 1250.00 1400.00 30
7698 BLAKE MANAGER 7839 1981-5-1 2850.00 30
7782 CLARK MANAGER 7839 1981-6-9 2450.00 10
7788 SCOTT ANALYST 7566 1987-4-19 3000.00 20
7839 KING PRESIDENT 8888 1981-11-17 5000.00 10
7844 TURNER SALESMAN 7698 1981-9-8 1500.00 0.00 30
7876 ADAMS CLERK 7788 1987-5-23 1100.00 20
7900 JAMES CLERK 7698 1981-12-3 950.00 30
7902 FORD ANALYST 7566 1981-12-3 3000.00 20
7934 MILLER CLERK 7782 1982-1-23 1300.00 10

(1)创建部门表

create table if not exists dept(
deptno int,
dname string,
loc int
)
row format delimited fields terminated by '\t';

(2)创建员工表

create table if not exists emp(
empno int,
ename string,
job string,
mgr int,
hiredate string,
sal double,
comm double,
deptno int)
row format delimited fields terminated by '\t';

(3)导入数据

load data local inpath '/home/zzdq/dept.txt' into table dept;
load data local inpath '/home/zzdq/emp.txt' into table emp;

1)全表查询

hive (default)> select * from emp; 
hive (default)> select empno,ename,job,mgr,hiredate,sal,comm,deptno from  emp ;

2)选择特定列查询

hive (default)> select empno, ename from emp;

注意:

(1)SQL 语言大小写不敏感。

(2)SQL 可以写在一行或者多行

(3)关键字不能被缩写也不能分行

(4)各子句一般要分行写。

(5)使用缩进提高语句的可读性。

2. 列别名

1)重命名一个列

2)便于计算

3)紧跟列名,也可以在列名和别名之间加入关键字‘AS’

4)案例实操

查询名称和部门

hive (default)> select ename as name,deptno as dept from emp;

3. 算术运算符

案例实操:查询出所有员工的薪水后加1 显示。

hive (default)> select mgr+100 from emp;

4. 常用函数

1)求总行数(count),这个有MR生成

hive (default)> select count(*) cnt from emp; 

2)求工资的最大值(max),这个有MR生成

hive (default)> select max(mgr) from emp;

3)求工资的最小值(min)这个有MR生成

hive (default)> select min(mgr) from emp;

4)求工资的总和(sum)这个有MR生成

hive (default)> select sum(mgr) from emp;

5)求工资的平均值(avg)这个有MR生成

hive (default)> select avg(mgr) avg_sql from emp;

5. Limit 语句

典型的查询会返回多行数据。LIMIT 子句用于限制返回的行数。

hive (default)> select * from emp limit 5;
hive (default)> select * from emp limit 2;

6. Where 语句

1)使用 WHERE 子句,将不满足条件的行过滤掉

2)WHERE 子句紧随 FROM 子句

3)案例实操

查询出薪水大于1000 的所有员工

hive (default)> select * from emp where sal >1000; 

注意:where 子句中不能使用字段别名。

7. 比较运算符(Between/In/ Is Null)

1)下面表中描述了谓词操作符,这些操作符同样可以用于 JOIN…ON 和 HAVING 语句中。

操作符支持的数据类型描述
A=B基本数据类型如果A等于B则返回TRUE,反之返回FALSE
A<=>B基本数据类型如果A和B都为NULL,则返回TRUE,如果一边为NULL,返回False
A<>B, A!=B基本数据类型A或者B为NULL则返回NULL;如果A不等于B,则返回TRUE,反之返回FALSE
A<B基本数据类型A或者B为NULL,则返回NULL;如果A小于B,则返回TRUE,反之返回FALSE
A<=B基本数据类型A或者B为NULL,则返回NULL;如果A小于等于B,则返回TRUE,反之返回FALSE
A>B基本数据类型A或者B为NULL,则返回NULL;如果A大于B,则返回TRUE,反之返回FALSE
A>=B基本数据类型A或者B为NULL,则返回NULL;如果A大于等于B,则返回TRUE,反之返回FALSE
A [NOT] BETWEEN B AND C基本数据类型如果A,B或者C任一为NULL,则结果为NULL。 如果A的值大于等于B而且小于或等于C,则结果为TRUE,反之为FALSE。 如果使用NOT关键字则可达到相反的效果。
A IS NULL所有数据类型如果A等于NULL,则返回TRUE,反之返回FALSE
A IS NOT NULL所有数据类型如果A不等于NULL,则返回TRUE,反之返回FALSE
IN(数值1,数值2)所有数据类型使用IN运算显示列表中的值
A [NOT] LIKE Bstring类型B是一个SQL下的简单正则表达式,也叫通配符模式, 如果A与其匹配的话,则返回TRUE;反之返回FALSE。 B的表达式说明如下: 'x%’表示A必须以字母'x’开头, ‘%x’表示A必须以字母’x'结尾,而‘%x%'表示A包含有字母’x’, 可以位于开头,结尾或者字符串中间。如果使用NOT关键字则可达到相反的效果。
A RLIKE B, A REGEXP Bstring类型B 是基于 java 的正则表达式,如果 A 与其匹配, 则返回 TRUE;反之返回 FALSE。 匹配使用的是 JDK 中的正则表达式接口实现的, 因为正则也依据其中的规则。 例如,正则表达式必须和整个字符串 A 相匹配, 而不是只需与其字符串匹配。

2)案例实操

(1)查询出薪水等于5000 的所有员工

hive (default)> select * from emp where mgr = 7902;
OK
emp.empno  emp.ename  emp.job emp.mgr emp.hiredate  emp.sal emp.comm  emp.deptno
7369  SMITH  CLERK 7902 1980-12-17 800.0 20.0  NULL
Time taken: 0.285 seconds, Fetched: 1 row(s)

(2)查询工资在500 到1000 的员工信息

hive (default)> select * from emp where mgr between 7500 and 7700;
OK
emp.empno  emp.ename  emp.job emp.mgr emp.hiredate  emp.sal emp.comm  emp.deptno
7499  ALLEN  SALESMAN 7698 1981-2-20 1600.0 300.0 30
7521  WARD  SALESMAN 7698 1981-2-22 1250.0 500.0 30
7654  MARTIN  SALESMAN 7698 1981-9-28 1250.0 1400.0 30
7788  SCOTT  ANALYST 7566 1987-4-19 3000.0 20.0  NULL
7844  TURNER  SALESMAN 7698 1981-9-8 1500.0 0.0 30
7900  JAMES  CLERK 7698 1981-12-3 950.0 30.0  NULL
7902  FORD  ANALYST 7566 1981-12-3 3000.0 20.0  NULL
Time taken: 0.576 seconds, Fetched: 7 row(s)

(3)查询 comm 为空的所有员工信息

hive (default)> select * from emp where comm is null;
OK
emp.empno  emp.ename  emp.job emp.mgr emp.hiredate  emp.sal emp.comm  emp.deptno
7839  KING  PRESIDENT  NULL 5000.00 10.0  NULL  NULL
Time taken: 0.229 seconds, Fetched: 1 row(s)

(4)查询工资是1500 或5000 的员工信息

hive (default)> select * from emp where sal in (1500,2600);
OK
emp.empno  emp.ename  emp.job emp.mgr emp.hiredate  emp.sal emp.comm  emp.deptno
7844  TURNER  SALESMAN 7698 1981-9-8 1500.0 0.0 30
Time taken: 0.176 seconds, Fetched: 1 row(s)

8. Like 和 RLike

1)使用 LIKE 运算选择类似的值

2)选择条件可以包含字符或数字: %代表零个或多个字符(任意个字符)。 _ 代表一个字符。

3)RLIKE子句 RLIKE 子句是 Hive 中这个功能的一个扩展,其可以通过 Java 的正则表达式这个更强大的语言来指定匹配条件。

4)案例实操

(1)查找名字以 A 开头的员工信息 hive (default)> select * from emp where ename LIKE 'A%';

(2)查找名字中第二个字母为 A 的员工信息 hive (default)> select * from emp where ename LIKE '_A%';

(3)查找名字中带有 A 的员工信息 hive (default)> select * from emp where ename RLIKE '[A]';

9. 逻辑运算符(And/Or/Not)

1)案例实操

(1)查询薪水大于1000,部门是30

hive (default)> select * from emp where sal>1000 and deptno=30;
OK
emp.empno  emp.ename  emp.job emp.mgr emp.hiredate  emp.sal emp.comm  emp.deptno
7499  ALLEN  SALESMAN 7698 1981-2-20 1600.0 300.0 30
7521  WARD  SALESMAN 7698 1981-2-22 1250.0 500.0 30
7654  MARTIN  SALESMAN 7698 1981-9-28 1250.0 1400.0 30
7844  TURNER  SALESMAN 7698 1981-9-8 1500.0 0.0 30
Time taken: 0.696 seconds, Fetched: 4 row(s)

(2)查询薪水大于1000,或者部门是30

hive (default)> select * from emp where sal>1000 or deptno=30;
OK
emp.empno  emp.ename  emp.job emp.mgr emp.hiredate  emp.sal emp.comm  emp.deptno
7499  ALLEN  SALESMAN 7698 1981-2-20 1600.0 300.0 30
7521  WARD  SALESMAN 7698 1981-2-22 1250.0 500.0 30
7566  JONES  MANAGER 7839 1981-4-2 2975.0 20.0  NULL
7654  MARTIN  SALESMAN 7698 1981-9-28 1250.0 1400.0 30
7698  BLAKE  MANAGER 7839 1981-5-1 2850.0 30.0  NULL
7782  CLARK  MANAGER 7839 1981-6-9 2450.0 10.0  NULL
7788  SCOTT  ANALYST 7566 1987-4-19 3000.0 20.0  NULL
7844  TURNER  SALESMAN 7698 1981-9-8 1500.0 0.0 30
7876  ADAMS  CLERK 7788 1987-5-23 1100.0 20.0  NULL
7902  FORD  ANALYST 7566 1981-12-3 3000.0 20.0  NULL
7934  MILLER  CLERK 7782 1982-1-23 1300.0 10.0  NULL
Time taken: 0.22 seconds, Fetched: 11 row(s)

(3)查询除了20 部门和30 部门以外的员工信息

hive (default)> select * from emp where not deptno=20 or not deptno=30;
OK
emp.empno  emp.ename  emp.job emp.mgr emp.hiredate  emp.sal emp.comm  emp.deptno
7499  ALLEN  SALESMAN 7698 1981-2-20 1600.0 300.0 30
7521  WARD  SALESMAN 7698 1981-2-22 1250.0 500.0 30
7654  MARTIN  SALESMAN 7698 1981-9-28 1250.0 1400.0 30
7844  TURNER  SALESMAN 7698 1981-9-8 1500.0 0.0 30
Time taken: 0.193 seconds, Fetched: 4 row(s)

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

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

相关文章

数据结构与算法教程,数据结构C语言版教程!(第三部分、栈(Stack)和队列(Queue)详解)五

第三部分、栈(Stack)和队列(Queue)详解 栈和队列&#xff0c;严格意义上来说&#xff0c;也属于线性表&#xff0c;因为它们也都用于存储逻辑关系为 "一对一" 的数据&#xff0c;但由于它们比较特殊&#xff0c;因此将其单独作为一章&#xff0c;做重点讲解。 使用栈…

Java Swing 图书借阅系统 窗体项目 期末课程设计 窗体设计

视频教程&#xff1a; 【课程设计】图书借阅系统 功能描述&#xff1a; 图书管理系统有三个角色&#xff0c;系统管理员、图书管理员、借阅者&#xff1b; 系统管理员可以添加借阅用户&#xff1b; ​图书管理员可以添加图书&#xff0c;操作图书借阅和归还&#xff1b; 借…

c++例题2点和直线关系

#include<iostream> #include<string> using namespace std; //圆的类 class yuan{ public:int x2 10;int y2 10;int r 5; }; //点的类 class dian{ public :void setx(int x){x1 x;}int getx(){return x1;}void sety(int y){y1 y;}int gety(){return y1;} pr…

Lagrange对偶法

这里写自定义目录标题 5.1.1 The Lagrangian5.1.2 The Lagrange dual function5.2 The Lagrange dual problem5.2.3 Strong duality and Slater’s constraint qualification5.2.3 Strong duality and Slater’s constraint qualification5.5.3 KKT optimality conditions Lagr…

2024上半年教资笔试报名详细教程1月12日开始报名啦

重点提醒&#xff1a; 1、注册开放时间&#xff1a;2024年1月10日开始。 &#xff08;参加过笔试的考生&#xff0c;需要重新注册&#xff0c; 不影响已获得的笔试成绩。名额少的考点建议提前注册抢名额&#xff09; 2、网上报名时间&#xff1a;2024年1月12日至15日。 千万不…

[开发语言][c++][python]:C++与Python中的赋值、浅拷贝与深拷贝

C与Python中的赋值、浅拷贝与深拷贝 1. Python中的赋值、浅拷贝、深拷贝2. C中的赋值、浅拷贝、深拷贝2.1 概念2.2 示例&#xff1a;从例子中理解1) 不可变对象的赋值、深拷贝、浅拷贝2) 可变对象的赋值、浅拷贝与深拷贝3) **可变对象深浅拷贝(外层、内层改变元素)** 写在前面&…

资源三角形

美国哈佛大学的研究小组提出了著名的资源三角形&#xff1a;没有物质&#xff0c;什么也不存在&#xff1b;没有能量&#xff0c;什么也不会发生&#xff1b;没有信息&#xff0c;任何事物都没有意义。物质、能量和信息是相互有区别的&#xff0c;是人类社会赖以生存、发展的三…

Nginx负载均衡以及常用的7层协议和4层协议的介绍

一、引言 明人不说暗话&#xff0c;下面来解析一下 Nginx 的负载均衡。需要有 Linux 和 Nginx 环境哈。 二、nginx负载均衡的作用 高并发&#xff1a;负载均衡通过算法调整负载&#xff0c;尽力均匀的分配应用集群中各节点的工作量&#xff0c;以此提高应用集群的并发处理能力…

Ftrans飞驰云联荣获“CSA 2023安全创新奖”

2023年12月21日&#xff0c;第七届云安全联盟大中华区大会在深圳成功举办。会上&#xff0c;CSA大中华区发布了多个研究成果并进行 CSA 2023年度颁奖仪式&#xff0c;Ftrans飞驰云联以其突出的技术创新能力和广泛的市场应用前景&#xff0c;荣获备受瞩目的“CSA 2023安全创新奖…

【算法与数据结构】62、LeetCode不同路径

文章目录 一、题目二、解法2.1 动态规划解法2.2 数论解法 三、完整代码 所有的LeetCode题解索引&#xff0c;可以看这篇文章——【算法和数据结构】LeetCode题解。 一、题目 二、解法 2.1 动态规划解法 思路分析&#xff1a;机器人只能向下或者向右移动&#xff0c;那么到达&a…

leetcode 2645. 构造有效字符串的最少插入数-python

题目&#xff1a; 给你一个字符串 word &#xff0c;你可以向其中任何位置插入 “a”、“b” 或 “c” 任意次&#xff0c;返回使 word 有效 需要插入的最少字母数。 如果字符串可以由 “abc” 串联多次得到&#xff0c;则认为该字符串 有效 。 解题方法 1.先判断字符串是否…

【剪枝】【广度优先】【深度优先】488祖玛游戏

作者推荐 【动态规划】458:可怜的小猪 涉及知识点 剪枝 广度优先 深度优先 488祖玛游戏 在这个祖玛游戏变体中&#xff0c;桌面上有 一排 彩球&#xff0c;每个球的颜色可能是&#xff1a;红色 ‘R’、黄色 ‘Y’、蓝色 ‘B’、绿色 ‘G’ 或白色 ‘W’ 。你的手中也有一些…

kubeadm安装kubernetes

基本环境配置 节点分为&#xff1a;master&#xff0c;node&#xff0c;masterlb(keepalived虚拟Ip&#xff0c;不占用机器) k8s-master01 16 k8s-node01 113 15 k8s-node02 115 进入之后直接选done done 上海 123456 设置静态ip 然后去虚拟机里面设置ens即可 查看命…

MFC为对话框资源添加类

VC6新建一个对话框类型的工程; 建立之后资源中默认有2个对话框,一个是主对话框,About这个是默认建立的关于版权信息的; 然后主对话框有对应的.h和.cpp文件;可以在其中进行编程; 默认建立的有一个 关于 对话框; 在资源中新插入一个对话框,IDD_DIALOG1是对话框ID; 新加…

国际版WPS Office 18.6.1

【应用名称】&#xff1a;WPS Office 【适用平台】&#xff1a;#Android 【软件标签】&#xff1a;#WPS 【应用版本】&#xff1a;18.6.1 【应用大小】&#xff1a;160MB 【软件说明】&#xff1a;软件日常更新。WPS Office是使用人数最多的移动办公软件。独有手机阅读模式…

LLM主流框架:Causal Decoder、Prefix Decoder和Encoder-Decoder

本文将介绍如下内容&#xff1a; transformer中的mask机制Causal DecoderPrefix DecoderEncoder Decoder总结 一、transformer中的mask机制 在Transformer模型中&#xff0c;mask机制是一种用于在self-attention中的技术&#xff0c;用以控制不同token之间的注意力交互。具体…

探索WPF控件内容模型的四大支柱

WPF 内容模型 WPF控件内容模型主要指派生于System.Windows.Controls.Control类的各种控件&#xff0c;有四个可包含任意内容的类。 下表列出了继承自 Control 的类。 ContentControl&#xff1a;用于包含一段任意类型的内容。但是只能包含一个子元素作为其“内容”。它可以包…

图像分割deeplab系列

DeepLab系列是谷歌团队提出的一系列语义分割算法。DeepLab v1于2014年推出&#xff0c;并在PASCAL VOC2012数据集上取得了分割任务第二名的成绩&#xff0c;随后2017到2018年又相继推出了DeepLab v2&#xff0c;DeepLab v3以及DeepLab v3。DeepLab v1的两个创新点是空洞卷积&am…

【Python】新鲜出炉的海洋捕食者算法Python版本

2020年发表的海洋捕食者算法《Marine Predators Algorithm: A nature-inspired metaheuristic》。 作者只在原论文中给出了MATLAB代码&#xff0c;网上也没有Python版本&#xff0c;我自己用Python重写了MATLAB代码。 """2020海洋捕食者算法 """…

spaceship

通过数字平台启动您的网站、想法和未来&#xff0c;该平台旨在提供和连接您所需的域、托管、电子邮件和 Web 工具&#xff0c;并让您完全掌控 如果需要购买可以开5347的卡&#xff0c;点击获取