hive中的逻辑运算符 案列_Hive 的基本运算符 及 查询

测试数据和表数据

1 Bob 1200

2 Black 2100

3 BigDataBoy 5600表

create table hive_db(

id int,

name string,

money int

)

row format delimited

fields terminated by '\t';

基本查询格式

select ... from ...

语法格式规范HQL 语言大小写不敏感

HQL 可以写一行,也可以写多行

关键字不能被缩写也不能分行

各子句一般要分行写

使用缩进和换行提高语句的可读性

全表和特定列查询全表查询

select * from 表名;特定列查询

select 字段名,字段名 from 表名;

列别名关键字 as

select 字段名 as 列别名, 字段名 as 列别名 from 表名

算数运算符运算符

描述

A + B

A 加 B

A - B

A 减 B

A * B

A 乘 B

A / B

A 除 B

A % B

A 对 B 取余数

hive> select 1+6;

OK

7

Time taken: 0.117 seconds, Fetched: 1 row(s)

hive> select 2 & 6;

OK

2

Time taken: 0.144 seconds, Fetched: 1 row(s)

hive> select ~6;

OK

-7

Time taken: 0.153 seconds, Fetched: 1 row(s)

常用函数求行数 count(*) ,count() 还能进行其他的统计

hive> select count(*) from hive_db; (会跑一个MapReduce任务)

Query ID = root_20200119201909_4eaa334c-5e26-46e4-8ff9-ef0e4a703394

Total jobs = 1

...

Stage-Stage-1: Map: 1 Reduce: 1 Cumulative CPU: 4.27 sec HDFS Read: 6799 HDFS Write: 2 SUCCESS

Total MapReduce CPU Time Spent: 4 seconds 270 msec

OK

4

Time taken: 131.007 seconds, Fetched: 1 row(s)

最大值 max()

hive> select max(money) from hive_db;

Query ID = root_20200119202349_2d1c7587-554e-4089-8b99-b76cb08ddab1

...

Stage-Stage-1: Map: 1 Reduce: 1 Cumulative CPU: 4.06 sec HDFS Read: 6908 HDFS Write: 5 SUCCESS

Total MapReduce CPU Time Spent: 4 seconds 60 msec

OK

5600

Time taken: 125.705 seconds, Fetched: 1 row(s)最小值 min()

hive> select min(money) from hive_db;总和 sum()

hive> select sum(money) from hive_db;平均值 avg()

hive> select avg(money) from hive_db;

比较运算(Between/In/ Is Null)操作符

支持的数据类型

描述

A = B

基本数据类型

如果 A = B ,返回 True,反之返回 False

A <=> B

基本数据类型

A 、B 有一个为 NULL ,则返回 NULL ; A、B 都为 NULL,返回 True;A = B ,返回 True,反之返回 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

A IN(数值1, 数值2)

基本数据类型

显示该字段 等于 IN() 里数值的数据

A [NOT] LIKE B

STRING 类型

B 是 SQL 下简单的正则表达式,与 A 匹配,则返回 True,反之返回 False;使用 NOT 达到相反的效果

A RLIKE B, A REGEXP B

STRING 类型

B是一个正则表达式,如果A与其匹配,则返回TRUE;反之返回FALSE。匹配使用的是JDK中的正则表达式接口实现的,因为正则也依据其中的规则。例如,正则表达式必须和整个字符串A相匹配,而不是只需与其字符串匹配。

简单例子

# 工资在 2000 到 6000 之间的

hive> select * from hive_db where money between 2000 and 6000;

OK

2 Black 2100

3 BigDataBoy 5600

Time taken: 0.118 seconds, Fetched: 2 row(s)

# 查询 money 为 NULL 的

hive> select * from hive_db where money is null;

OK

NULL NULL NULL

Time taken: 0.227 seconds, Fetched: 1 row(s)

# 查询 money 为 2100 和 5600 的数据

hive> select * from hive_db where money in(2100,5600);

OK

2 Black 2100

3 BigDataBoy 5600

Time taken: 0.21 seconds, Fetched: 2 row(s)

Like 和 RLikeLike 使用的是 SQL语法 下的匹配

% 代表零个或多个字符(任意个字符)。

_ 代表一个字符

%o:匹配 o 开头的

o%:匹配 o 结尾的

%o%:匹配 包含 o 的

_2%:匹配开头 第二位是 2 的

__2_:匹配 4 位,但第3位 是 2 的

# 匹配 name 字段带 o 的

hive> select * from hive_db where name like '%o%';

OK

1 Bob 1200

3 BigDataBoy 5600

Time taken: 0.092 seconds, Fetched: 2 row(s)

RLike 使用的 Java 下的正则表达式

# 匹配 money 中 带有 12 的

hive> select * from hive_db where money rlike '12';

OK

1 Bob 1200

Time taken: 0.075 seconds, Fetched: 1 row(s)

逻辑运算符(And/Or/Not)操作符

含义

And

Or

Not

简单例子

# 查询 money 大于 1000 并 name 是 Bob 的

hive> select * from hive_db where money > 1000 and name = 'Bob';

OK

1 Bob 1200

Time taken: 0.145 seconds, Fetched: 1 row(s)

limit 语句limit 子句用于限定返回的行数

hive> select * from hive_db limit 2;

OK

1 Bob 1200

2 Black 2100

Time taken: 0.196 seconds, Fetched: 2 row(s)

where 语句将不满足条件的过滤掉

where 子句紧随 from 子句

# 查询 money 大于 2000 的

hive> select * from hive_db where money > 2000;

OK

2 Black 2100

3 BigDataBoy 5600

Time taken: 0.172 seconds, Fetched: 2 row(s)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值