马哈鱼数据血缘分析器分析集合运算

马哈鱼数据血缘分析器分析集合运算

当你使用马哈鱼数据血缘分析器进行SQL语句分析时,很多场景中会出现集合运算,本文主要介绍马哈鱼在处理集合运算时的分析场景。首先,我们需要先了解一下数据库常见的集合运算交、并、差,如下:

并集 union all 返回各个查询的所有记录,包括重复记录

并集 union 返回各个查询的所有记录,不包括重复记录

交集 intersect 返回两个查询共有的记录

差集 minus 返回第一个查询的记录减去第二个查询记录之后剩余的记录

由于交并差集合运算从计算逻辑上都是一致的,即两个结果集的加减运算,所以在马哈鱼中的显示是一致的。

1、集合运算的基本要求

首先,集合运算需要一定的要求,具体要求如下:

在select列表中中得列表和表达式在数量上必须匹配
在第二个查询中得每一列得数据类型必须与第一个查询其对应列得数据类型相匹配
可以用括号来改变执行顺序
order by 子句只能在语句最后出现
可以使用第一个查询中得列名,别名或相对位置)
除了union all之外,系统会自动删除重复得记录
列明为第一个查询返回的结果
除union all之外,系统自动按照第一个查询中得第一个列得升序排列

接下来,分别介绍一下上面提到的几种集合运算在马哈鱼中时如下展示的:

  • union all 完整并集
select d.deptno,'abc' from dept d
union all
select  e.deptno,'abs' from emp e group by e.deptno;

并集运算。语句中有列和常量两部分组成,在马哈鱼中,将常量独立到一个逻辑集合【SQL_CONSTANTS]中,便于读者进行区分。在常量未被指定列别名时,最终结果集中显示为未知名称【UNNAMNED1]。如果指定别名,显示为别名。

image-20210919220301255

image-20210919220721041

  • union去重并集

众所周知,union区别于union all在于对最终结果集中进行了distinct运算,但在马哈鱼中这个区别并没有给做区分,所以您看到的血缘分析结果和union all是一致的。

select d.deptno,'abc' as b from dept d
union 
select  e.deptno,'abs' as b from emp e group by e.deptno;

image-20210919221231448

  • intersect 交集

交集运算。该运算默认进行distinct运算,马哈鱼在分析交集运算时和并集一致。

image-20210919222113771

  • minus差集(又称补集)

差集运算。该运算默认进行distinct运算,马哈鱼在分析差集运算时和并集、交集也是一致。

image-20210919222539289

2、总结

集合运算组合两个或多个部分查询的结果到一个结果中,包含集合运算的查询又称为复合查询。这种复合查询中虽然包含上述四种运算,但是他们的实现逻辑完全一致。所以,在马哈鱼数据血缘分析器中的分析也是完全一致的,需要注意的是,一是对于SQL语句中有常量时,会被马哈鱼独立显示;二是马哈鱼没有对是否distinct的运算进行额外说明,需要使用者自己去区别。

3、参考

马哈鱼数据血缘分析器: https://sqlflow.gudusoft.com

马哈鱼数据血缘分析器中文网站: https://www.sqlflow.cn

感兴趣的联系:Zy2133223

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值