馬哈魚聚合函數中使用的數據流列

聚合函數通常將列作為參數,在本文中,我們將討論在用作函數參數的列和聚合函數之間創建什麼樣的數據流。

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()