hive sql 中的运算_SQL中的SET运算

hive sql 中的运算

SQL supports few Set operations which can be performed on the table data. These are used to get meaningful results from data stored in the table, under different special conditions.

SQL支持很少的可以对表数据执行的Set操作。 这些用于在不同的特殊条件下从表中存储的数据中获取有意义的结果。

In this tutorial, we will cover 4 different types of SET operations, along with example:

在本教程中,我们将介绍4种不同类型的SET操作以及示例:

  1. UNION

    联盟

  2. UNION ALL

    全联盟

  3. INTERSECT

    相交

  4. MINUS

    减去

联盟行动 (UNION Operation)

UNION is used to combine the results of two or more SELECT statements. However it will eliminate duplicate rows from its resultset. In case of union, number of columns and datatype must be same in both the tables, on which UNION operation is being applied.

UNION用于合并两个或多个SELECT语句的结果。 但是,它将从结果集中消除重复的行。 如果使用并集,则在两个表上要应用UNION操作的列数和数据类型必须相同。

union set operation in sql
UNION示例 (Example of UNION)

The First table,

第一张桌子

IDName
1abhi
2adam
ID 名称
1个 阿比
2 亚当

The Second table,

第二张桌子

IDName
2adam
3Chester
ID 名称
2 亚当
3 切斯特

Union SQL query will be,

Union SQL查询将是,

SELECT * FROM First 
UNION
SELECT * FROM Second;

The resultset table will look like,

结果集表如下所示:

IDNAME
1abhi
2adam
3Chester
ID 名称
1个 阿比
2 亚当
3 切斯特

全联盟 (UNION ALL)

This operation is similar to Union. But it also shows the duplicate rows.

此操作类似于联合。 但它也显示重复的行。

union all set operation in sql
全部联合示例 (Example of Union All)

The First table,

第一张桌子

IDNAME
1abhi
2adam
ID 名称
1个 阿比
2 亚当

The Second table,

第二张桌子

IDNAME
2adam
3Chester
ID 名称
2 亚当
3 切斯特

Union All query will be like,

联合所有查询将是这样,

SELECT * FROM First 
UNION ALL
SELECT * FROM Second;

The resultset table will look like,

结果集表如下所示:

IDNAME
1abhi
2adam
2adam
3Chester
ID 名称
1个 阿比
2 亚当
2 亚当
3 切斯特

相交 (INTERSECT)

Intersect operation is used to combine two SELECT statements, but it only retuns the records which are common from both SELECT statements. In case of Intersect the number of columns and datatype must be same.

相交操作用于二者结合起来SELECT语句,但它只是retuns这是从两个共同记录SELECT语句。 在相交的情况下,列数和数据类型必须相同。

NOTE: MySQL does not support INTERSECT operator. 注意: MySQL不支持INTERSECT运算符。
intersect set operatoin in sql
相交的例子 (Example of Intersect)

The First table,

第一张桌子

IDNAME
1abhi
2adam
ID 名称
1个 阿比
2 亚当

The Second table,

第二张桌子

IDNAME
2adam
3Chester
ID 名称
2 亚当
3 切斯特

Intersect query will be,

相交查询将是

SELECT * FROM First 
INTERSECT
SELECT * FROM Second;

The resultset table will look like

结果集表如下所示

IDNAME
2adam
ID 名称
2 亚当

减去 (MINUS)

The Minus operation combines results of two SELECT statements and return only those in the final result, which belongs to the first set of the result.

减号运算组合两个SELECT语句的结果,并且仅返回最终结果(属于结果的第一组)中的结果。

minus set operation in sql
减号示例 (Example of Minus)

The First table,

第一张桌子

IDNAME
1abhi
2adam
ID 名称
1个 阿比
2 亚当

The Second table,

第二张桌子

IDNAME
2adam
3Chester
ID 名称
2 亚当
3 切斯特

Minus query will be,

减号查询将是,

SELECT * FROM First 
MINUS
SELECT * FROM Second;

The resultset table will look like,

结果集表如下所示:

IDNAME
1abhi
ID 名称
1个 阿比

翻译自: https://www.studytonight.com/dbms/set-operation-in-sql.php

hive sql 中的运算

### HiveSQL 练习题与学习资源 以下是关于HiveSQL的相关练习题和学习资源的详细介绍: #### 一、基础建表语句 创建表格是Hive操作的基础之一。例如,可以通过以下命令定义一个简单的成绩表`score`[^2]: ```sql CREATE TABLE score ( uid STRING, subject_id STRING, score INT ) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'; ``` 此语句用于创建一张包含学生ID (`uid`)、科目ID (`subject_id`) 和分数 (`score`) 的表。 --- #### 二、解决数据倾斜问题的技术 在实际应用中,Hive查询可能因数据分布不均而引发性能瓶颈。为了缓解这一现象,可以采用如下方法[^1]: - **动态分区插入** 通过`DISTRIBUTE BY RAND()`实现随机分配数据到不同分区内,从而减少特定键值的压力。 ```sql INSERT OVERWRITE TABLE sales PARTITION (date) SELECT id, product, amount, date FROM original_table DISTRIBUTE BY RAND(); ``` - **聚合函数优化** 针对倾斜数据集执行高效统计计算时,可利用`GROUP BY`完成汇总操作。 ```sql SELECT key, COUNT(*) FROM skewed_table GROUP BY key; ``` 上述两种方式分别适用于写入阶段以及读取分析场景下的性能调优需求。 --- #### 三、复杂窗口函数的应用实例 对于更高级别的数据分析任务,则需要用到诸如数组集合运算等功能来增强表达能力。下面展示了一个判断某篇文章是否属于原创作品的例子[^3]: ```sql SELECT oid, SUM(IF(array_contains(origin, old), 1, 0)) AS nums -- 判断是否存在于array内 FROM ( SELECT id, oid, collect_set(IF(oid = 0, id, NULL)) OVER () AS origin -- 构造原创文章Array FROM table )t1 WHERE oid <> 0; ``` 这里运用到了`COLLECT_SET`收集唯一值并形成列表的功能,再配合条件过滤实现了目标逻辑。 --- #### 四、推荐的学习平台与资料 除了官方文档外,还有许多优质的在线教程可以帮助深入理解HiveSQL的实际应用场景及其最佳实践方案: - 尚硅谷提供的《Hive SQL 题目总结》涵盖了大量实战案例; - 各大技术博客分享的真实项目经验也是不可多得的好素材; - LeetCode 或 HackerRank 上虽无专门分类,但部分大数据相关挑战同样涉及此类知识点。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值