搭配陣列使用彙總函式 - Amazon Athena

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

搭配陣列使用彙總函式

  • 若要在陣列中新增值,請使用 SUM,如下列範例所示。

  • 若要彙總陣列中的多個資料列,請使用 array_agg。如需相關資訊,請參閱 從子查詢創建數組

注意

自 Athena 引擎版本 2 開始,彙總函數支援 ORDER BY

WITH dataset AS ( SELECT ARRAY [ ARRAY[1,2,3,4], ARRAY[5,6,7,8], ARRAY[9,0] ] AS items ), item AS ( SELECT i AS array_items FROM dataset, UNNEST(items) AS t(i) ) SELECT array_items, sum(val) AS total FROM item, UNNEST(array_items) AS t(val) GROUP BY array_items;

在最後一個 SELECT 陳述式中,與其使用 sum()UNNEST,您可以使用 reduce() 來減少處理時間和資料傳輸,如下列範例所示。

WITH dataset AS ( SELECT ARRAY [ ARRAY[1,2,3,4], ARRAY[5,6,7,8], ARRAY[9,0] ] AS items ), item AS ( SELECT i AS array_items FROM dataset, UNNEST(items) AS t(i) ) SELECT array_items, reduce(array_items, 0 , (s, x) -> s + x, s -> s) AS total FROM item;

此查詢會傳回下列結果。無法保證傳回結果的順序。

+----------------------+ | array_items | total | +----------------------+ | [1, 2, 3, 4] | 10 | | [5, 6, 7, 8] | 26 | | [9, 0] | 9 | +----------------------+