彙總延伸項目 - AWS Clean Rooms

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

彙總延伸項目

AWS Clean Rooms 支援彙總擴充功能,以在單一陳述式中執行多個 GROUP BY 操作的工作。

GROUPING SETS

在單一陳述式中計算一或多個群組集。分組集是一組單一 GROUP BY 子句,一組 0 個或多個資料欄,您可以藉此將查詢的結果集分組。 GROUPBY GROUPING SETS 相當於對依不同資料欄分組的一個結果集執行UNIONALL查詢。例如,GROUPBY GROUPINGSETS((a)、(b)) 相當於 GROUP BY a UNION ALL GROUP BY b。

下列範例會傳回訂單資料表的產品根據產品類別和銷售產品種類進行分組的成本。

SELECT category, product, sum(cost) as total FROM orders GROUP BY GROUPING SETS(category, product); category | product | total ----------------------+----------------------+------- computers | | 2100 cellphones | | 1610 | laptop | 2050 | smartphone | 1610 | mouse | 50 (5 rows)

ROLLUP

假設階層,其中前幾欄被視為後續資料欄的父項。 會依提供的資料欄ROLLUP分組資料,除了分組的資料列之外,還傳回代表所有分組資料欄層級總計的額外小計資料列。例如,您可以使用 GROUP BY ROLLUP((a), (b)) 來傳回由 a 分組的結果集,然後在假設 b 是 a 的子區段時傳回 b。 ROLLUP也會傳回包含整個結果集的資料列,而不需要分組資料欄。

GROUP BY ROLLUP((a)、(b)) 等同於 GROUP BY GROUPINGSETS((a,b)、(a)、()。

下列範例會傳回訂單資料表產品先依類別分組,然後依產品分組的成本,其中以產品做為類別的細項。

SELECT category, product, sum(cost) as total FROM orders GROUP BY ROLLUP(category, product) ORDER BY 1,2; category | product | total ----------------------+----------------------+------- cellphones | smartphone | 1610 cellphones | | 1610 computers | laptop | 2050 computers | mouse | 50 computers | | 2100 | | 3710 (6 rows)

CUBE

依提供的資料欄分組資料,除了分組的資料列之外,還傳回代表所有分組資料欄層級總計的額外小計資料列。 會CUBE傳回與 相同的資料列ROLLUP,同時為 未涵蓋的每個分組資料欄組合新增額外的小計資料列ROLLUP。例如,您可以使用 GROUP BY CUBE((a), (b)) 來傳回由 a 分組的結果集,然後由 b 傳回,同時假設 b 是 a 的子區段,然後單獨使用 b。 CUBE也會傳回包含整個結果集的資料列,而不需要分組資料欄。

GROUP BY CUBE((a)、(b)) 等同於 GROUP BY GROUPINGSETS((a、b)、(a)、(b)、()。

下列範例會傳回訂單資料表產品先依類別分組,然後依產品分組的成本,其中以產品做為類別的細項。與上述的 範例不同ROLLUP,陳述式會傳回分組資料欄的每個組合的結果。

SELECT category, product, sum(cost) as total FROM orders GROUP BY CUBE(category, product) ORDER BY 1,2; category | product | total ----------------------+----------------------+------- cellphones | smartphone | 1610 cellphones | | 1610 computers | laptop | 2050 computers | mouse | 50 computers | | 2100 | laptop | 2050 | mouse | 50 | smartphone | 1610 | | 3710 (9 rows)