# Aggr

Aggr() 為在指定維度上計算的運算式傳回一個值陣列。例如，銷售額的值上限、按客戶、按地區。

Aggr 函數用於巢狀彙總，其中第一個參數 (內部彙總) 會根據維度值計算一次。會在第二個參數 (和後續參數) 中指定維度。

此外，Aggr 函數使用來自 Aggr 函數的結果陣列，作為巢狀彙總的輸入，應括在外部彙總函數內

語法：

Aggr({SetExpression}[DISTINCT] [NODISTINCT ] expr, StructuredParameter{, StructuredParameter})

傳回的資料類型： 雙值

引數：

* expr：運算式包含一個彙總函數。依照預設，彙總函數將彙總選項所定義的一組可能記錄。

* StructuredParameter:StructuredParameter 包含一個維度和可選的排序準則，格式如下：`(Dimension(Sort-type, Ordering))`。維度是單一欄位，不可為運算式。維度用於判定 Aggr 運算式所計算得出之值的陣列。

  如果包含排序準則，則將對使用 Aggr 函數所建立、針對維度計算的值陣列進行排序。這在排序順序影響其中所含 Aggr 函數之運算式的結果時非常重要。如需如何使用排序準則的詳細資料，請參閱 [將排序準則新增至結構化參數中的維度](https://help.qlik.com/zh-TW/qlikview/September2026/Subsystems/Client/Content/QV_QlikView/ChartFunctions/aggr.htm#Sorting)。

* SetExpression： 依照預設，彙總函數將彙總選項所定義的一組可能記錄。集合分析運算式可定義一組替代的記錄。

* DISTINCT：如果 expression 引數前面有 distinct 限定詞，或者完全不使用任何限定詞，則維度值的各個相異組合只會產生一個傳回值。這是製作彙總的一般方式；每個維度值的相異組合都會呈現在圖表中的一條線上。

* NODISTINCT：如果 expression 引數前面有 nodistinct 限定詞，則視基礎資料結構而定，維度值的各個組合可能會產生多個傳回值。如果只有一個維度，aggr 函數會傳回與來源資料中的列具有相同元素數的陣列。

諸如 Sum、Min 以及 Avg) 等基本彙總函數會傳回單一數值，其中 Aggr() 函數可與建立暫存的結果集 (虛擬表) 進行比較，透過此結果集可進行其他彙總。例如，在 Aggr() 陳述式中按客戶加總銷售額來計算平均銷售值，然後計算加總結果的平均值：Avg(TOTAL Aggr(Sum(Sales), Customer)).

提示備註如果想要建立多個層級的巢狀圖彙總，請使用計算維度中的 Aggr() 函數。

限制：

Aggr() 函數中的每個維度必須為單一欄位，且不得為運算式 (計算維度)。

[](https://help.qlik.com/en-US/qlikview/Subsystems/Client/Content/QV_QlikView/ChartFunctions/aggr.htm)將排序準則新增至結構化參數中的維度

在其基本格式中，引數 StructuredParameter (位於 Aggr 函數語法中) 是單一維度。運算式： Aggr(Sum(Sales, Month)) 會尋找每個月的銷售總值。但是，當包含在其他彙總函數中時，除非使用排序準則，否則可能會存在非預期的結果。這是因為某些維度可以按照數字或字母等方式進行排序。

在 StructuredParameter 引數 (位於 Aggr 函數之內) 中，您可在運算式中的維度上指定排序準則。這樣，您可在由 Aggr 函數產生的虛擬表上強制排序順序。

引數 StructuredParameter 擁有以下語法：

(FieldName, (Sort-type, Ordering))

可以內嵌結構化參數：

(FieldName, (FieldName2, (Sort-type, Ordering)))

排序類型可以是：NUMERIC、TEXT、FREQUENCY 或 LOAD\_ORDER。

與每個排序類型相關聯的順序類型所示如下：

排序順序類型

| 排序類型 | 可用順序類型 |
| --- | --- |
| NUMERIC | ASCENDING、DESCENDING 或 REVERSE |
| TEXT | ASCENDING、A2Z、DESCENDING、REVERSE 或 Z2A |
| FREQUENCY | DESCENDING、REVERSE 或 ASCENDING |
| LOAD\_ORDER | ASCENDING、ORIGINAL、DESCENDING 或 REVERSE |

順序類型 REVERSE 和 DESCENDING 是對等項。

對於排序類型 TEXT，順序類型 ASCENDING 和 A2Z 是對等項，DESCENDING、REVERSE 和 Z2A 是對等項。

對於排序類型 LOAD\_ORDER，順序類型 ASCENDING 和 ORIGINAL 是對等項。

## 範例

範例 1:

`Avg(Aggr(Sum(UnitSales*UnitPrice), Customer))`

運算式 `Aggr(Sum(UnitSales*UnitPrice), Customer)` 會得到依 Customer 的銷售額總計值，並傳回一個值陣列：295、715 與 120，為三個 Customer 值。

實際上，我們已建立臨時值清單，且不需要建立明確表格或包含這些值的資料行。這些值作為 Avg() 函數的輸入使用，進而得到銷售額平均值 376.6667。(您必須已在屬性面板中選取 Presentation 下的總計)。

範例 2:

`Aggr(NODISTINCT Max(UnitPrice), Customer)`

值陣列：16、16、16、25、25、25、19 與 19。nodistinct 限定詞表示，陣列包含來源資料中每一列的元素：每個都是最大 UnitPrice (針對每個 Customer 和 Product)。

範例 3:

`max(aggr(sum(Customers)-above(Sum(Customers)), (MonthYear,(NUMERIC, ASCENDING))))`

使用以下運算式中的 `StructuredParameter` 引數中的排序準則： `max(aggr(sum(Customers)-above(Sum(Customers)), (MonthYear,(NUMERIC, ASCENDING))))
`

如果沒有排序準則，運算式 `max(aggr(sum(Customers)-above(Sum(Customers)), (MonthYear)))` 的結果將取決於維度 MonthYear 的排序方式。我們可能不會獲得所期望的結果。透過將排序類型與順序類型的值新增到維度中，我們將排序準則指定到結構化參數中：`(MonthYear, (NUMERIC, ASCENDING))`，其中排序類型 NUMERIC 和順序 ASCENDING 可判定 MonthYear 以遞增數字順序來排序。

在這裡，我們希望客戶數量逐月最大限度地增加。例如，這可能會用在 KPI 視覺化效果中。

運算式的 Aggr 部分會將一個月中的客戶總數 (由 MonthYear 指定) 與上個月的總數進行比較。因為我們將排序準則與維度搭配使用：(MonthYear,(NUMERIC, ASCENDING))，我們確定 Aggr 透過以遞增數字順序，而不是遞增字母順序排序月份，由此比較虛擬表格中連續月份的客戶數量。

**範例中使用的資料：**

建立具有 Customer、Product、UnitPrice 與 UnitSales 作為維度的表格。將運算式作為一個量值新增到表格中。

`ProductData:``LOAD * inline [``Customer|Product|UnitSales|UnitPrice``Astrida|AA|4|16``Astrida|AA|10|15``Astrida|BB|9|9``Betacab|BB|5|10``Betacab|CC|2|20``Betacab|DD|25|25``Canutility|AA|8|15``Canutility|CC||19``] (delimiter is '|');`

## 瞭解更多資訊

* [基本彙總函數](https://help.qlik.com/zh-TW/qlikview/September2026/Subsystems/Client/Content/QV_QlikView/Scripting/AggregationFunctions/basic-aggregation-functions.htm)
* [集合分析與集合運算式](https://help.qlik.com/zh-TW/qlikview/September2026/Subsystems/Client/Content/QV_QlikView/ChartFunctions/SetAnalysis/set-analysis-expressions.htm)