聚合函数通常将列作为参数,在本文中,我们将讨论在用作函数参数的列和聚合函数之间创建什么样的数据流。
1. COUNT()
COUNT()可以采用COUNT(),也可以采用任何列名,甚至可以采用空参数。如果参数为空或为列,则参数和函数之间不会生成数据流。
1.1 直接数据流
SELECT count(empId) total_num FROM scott.emp;
默认情况下,empId列和COUNT()函数之间将生成直接数据流。
scott.emp.empId -> direct -> COUNT()
这个数据流可能看起来很奇怪,因为COUNT()的结果值不依赖于empId列的值。但是,如果我们的用户喜欢这样的数据流,这是一个选项。
1.2没有数据流
如果愿意,可以使用一个选项来决定不在empId和COUNT()之间生成数据流。
请注意,无论empId和COUNT()之间是否生成了直接数据流。将始终创建以下间接数据流。
scott.emp.RelationRows -> indirect -> COUNT()
2. 不包含COUNT()的聚合函数
COUNT()函数在创建数据流时有一点不同。所有其他聚合函数,如SUM()将创建一个直接数据流,其中列用作参数。
SELECT deptno, SUM(SAL) sal_sum FROM scott.emp group by deptno
将创建从SAL到SUM()的直接数据流。
scott.emp.SAL -> direct -> SUM()
3、参考
马哈鱼数据血缘分析器: https://sqlflow.gudusoft.com
马哈鱼数据血缘分析器中文网站: https://www.sqlflow.cn