# 彙總函數

稱為彙總函數的函數系列，包含將多個欄位值作為其輸入值並傳回每個群組單一結果的函數，其中分組是由圖表維度或指令碼陳述式中的 group by 子句所定義。

彙總函數包括 Sum()、Count()、Min()、Max() 等。

大多數彙總函數可以同時用在資料載入指令碼和圖表運算式中，但是語法有所不同。

## 在資料載入指令碼中使用彙總函數

彙總函數只能在 LOAD 和 SELECT 陳述式內部使用。

## 在圖表運算式中使用彙總函數

除非內部彙總包含 TOTAL 限定詞，否則彙總函數的參數不可包含其他彙總函數。 如需更進階的巢狀彙總，請使用進階函數 Aggr 結合指定的維度。

彙總函數會將選項所定義之一組可能記錄加以彙總。然而，可以在集合分析中使用集合運算式，來定義替代的一組記錄。

[集合分析與集合運算式](https://help.qlik.com/zh-TW/qlikview/September2025/Subsystems/Client/Content/QV_QlikView/ChartFunctions/SetAnalysis/set-analysis-expressions.htm)

## 如何計算彙總

彙總會透過特定表格的記錄來循環，彙總其中的記錄。例如，Count(&lt;Field&gt;) 將會計算 &lt;Field&gt; 所在表格中的記錄數量。若您只想要彙總相異欄位值，您需要使用 distinct 子句，例如 Count(distinct &lt;Field&gt;)。

若彙總函數包含來自不同表格的欄位，彙總函數將會透過構成欄位的表格交叉乘積的記錄來循環。這對效能有負面影響，因此應避免這類彙總，尤其是在您有大量資料時應避免。

## 索引鍵欄位彙總

計算彙總的方式代表您無法彙總索引鍵欄位，因為不清楚哪個表格應用於彙總。例如，若欄位 &lt;Key&gt; 連結兩個表格，則不清楚 Count(&lt;Key&gt;) 應從第一個或第二個表格傳回記錄數量。

不過，若您使用 distinct 子句，可針對跨越兩個表格連結的索引鍵欄位，妥善定義並計算彙總。

若您在彙總函數內部使用索引鍵欄位，而沒有 distinct 子句，則 QlikView 將會傳回可能無意義的數字。解決方案是使用 distinct 子句或使用索引鍵副本，亦即僅位於一個表格中的副本。

例如，在下列表格中，ProductID 是表格之間的金鑰。

Products 和 Details 表格之間的 ProductId 金鑰

Products 和 Details 表格之間的 ProductId 金鑰

ProductsProducts 和 DetailsDetails 表格之間的 ProductIdProductId 金鑰 ![透過索引鍵欄位 'ProductId' 連結的兩個表格](https://help.qlik.com/zh-TW/qlikview/September2025/Subsystems/Client/Content/Resources/Images/AggTables.png)

Count(ProductID) 可以在 Products 表格 (每個產品只有一個記錄 – ProductID 是主要金鑰) 中計算，或者可以在 Details 表格 (每個產品很可能有數個記錄) 中計算。若您想要計算相異產品的數量，應使用 Count(distinct ProductID)。若您想要計算特定表格的列數，不應使用金鑰。

### 三個或更多表格包含的索引鍵欄位彙總

distinct 前置詞只能用於最多連結兩個表格的索引鍵欄位。透過存在於三個或更多表格的索引鍵欄位分組彙總時，任何需要欄位頻率資訊的操作將會傳回 NULL。若索引鍵欄位連結三個或更多表格，必須改用欄位的非金鑰副本。