# Sum - 图表函数

Sum() 用于计算聚合数据之间表达式或字段指定值的总和。

语法：

Sum([{SetExpression}] [DISTINCT] [TOTAL [&lt;fld {,fld}&gt;]] expr])

返回数据类型： 数字

参数

| 参数 | 描述 |
| --- | --- |
| expr | 表达式或字段包含要度量的数据。 |
| SetExpression | 聚合函数会默认聚合选择项定义的可能记录集合。可选记录集合可由集合分析表达式定义。 |
| DISTINCT | 如果在函数参数前出现单词 DISTINCT，则将忽略计算该函数参数生成的副本。<br><br>信息注释虽然支持 DISTINCT 限定符，但需慎用，因为它可能会在遗漏某些数据的情况下让读者误以为显示了总计值。 |
| TOTAL | 如果在函数参数前面出现单词 TOTAL，则计算给出当前选择项的所有可能值，而不只是属于当前维度值的那些值，即它会忽略图表维度。<br><br>通过使用 TOTAL [&lt;fld {.fld}&gt;]（其中 TOTAL 限定符后跟一个或多个字段名称作为图表维度变量的子集的列表），您可以创建总可能值的子集。<br><br>[定义聚合范围](https://help.qlik.com/zh-CN/sense/May2026/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/define-aggregation-scope.htm) |

示例：图表表达式

| 示例 | 结果 |
| --- | --- |
| `Sum(UnitSales)` | 返回 `UnitSales` 中值的合计。 |
| `Sum(UnitSales*UnitPrice)` | 返回 `UnitPrice` 乘以聚合 `UnitSales` 的合计。 |
| `Sum(TOTAL UnitSales*UnitPrice)` | 返回表中所有行的总和以及总计，因为 `TOTAL` 限定符意味着总和是在不考虑图表维度的情况下计算的。 |
| `Sum({1} TOTAL UnitSales*UnitPrice)` | 集分析表达式 `{1}` 定义了要作为 `ALL` 评估的记录集，与所做任何选择无关。 |

## 示例 - Sum 基本原理

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/BasicAggregationFunctions/sum.htm)

#### 图表表达式

概述

打开数据加载编辑器，并将下面的加载脚本添加到新部分。

加载脚本包含：

* 加载到名为 `Example` 的数据表中的数据集。

* 数据表中有以下字段：

  * `Customer`

  * `Product`

  * `UnitSales`

  * `UnitPrice`

加载脚本

```
Example:
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
Canutility|AA|8|15
Canutility|CC||19
] (delimiter is '|');
```

结果

加载数据并打开工作表。创建新表并将这些字段添加为维度：

* `Customer`

* `Product`

创建以下度量：

* `=Sum(UnitSales)`，计算 `UnitSales` 的总和。

* `=Sum(UnitSales*UnitPrice)`，计算 `UnitSales` 乘以 `UnitPrice` 的聚合总和。

* `=Sum(TOTAL UnitSales*UnitPrice)`，计算表中所有行的总和以及总计，因为 `TOTAL` 限定符意味着所有单元格的总和都是相同的，不考虑图表维度。

* `=Sum({1} TOTAL UnitSales*UnitPrice)`，计算总数，与所做的选择无关，因为无论做出什么选择，集合分析表达式 `{1}` 都将要评估的记录集定义为 `ALL`。

Results table

| Customer | Product | Sum(UnitSales) | Sum(UnitSales\*UnitPrice) | Sum(TOTAL UnitSales\*UnitPrice) | Sum({1} TOTAL UnitSales\*UnitPrice) |
| --- | --- | --- | --- | --- | --- |
| Totals | - | 38 | 505 | 505 | 505 |
| Astrida | AA | 14 | 214 | 505 | 505 |
| Astrida | BB | 9 | 81 | 505 | 505 |
| Betacab | BB | 5 | 50 | 505 | 505 |
| Betacab | CC | 2 | 40 | 505 | 505 |
| Betacab | DD | 0 | 0 | 505 | 505 |
| Canutility | AA | 8 | 120 | 505 | 505 |
| Canutility | CC | 0 | 0 | 505 | 505 |

在此示例中，请注意以下几点：

* 对于第一个度量 `Sum(UnitSales`，`Totals` 单元格返回 `38`，即所有客户和产品中按 `UnitSales` 的值的总和。每个客户和产品组合的结果被汇总，以返回每个组合的 `UnitSales` 的总和。例如，客户 `Astrida` 的所有产品 `AA` 的 `UnitSales` 的总和为 `14`。

* 对于第二个度量 `Sum(UnitSales*UnitPrice)`，`Totals` 单元格返回 `505`。这是每个客户和产品组合 `UnitSales` 乘以 `UnitPrice` 的合计总数。

* 对于第三个度量 `Sum(TOTAL UnitSales*UnitPrice)`，包括 `Totals` 在内的所有行中返回的值为 `505`，因为 `TOTAL` 限定符忽略了图表维度。但是，如果在 `Customer` 等维度上进行选择，数值就会发生变化。例如，如果选择 `Betacab`，则生成的表将只有三行，每条 `Betacab` 记录一行，但该列将为所有行返回相同的总值 (`90`)。

* 第四个度量 `Sum({1} TOTAL UnitSales*UnitPrice)` 返回值 `505` 与任何选择无关，因为集合分析表达式 `{1}` 定义了要计算为 `ALL` 的记录集合。如果您选择了一个客户，例如 `Canutility` ，返回的值仍然是 `505` 。

## 示例 - 汇总销售数据的求和场景

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/BasicAggregationFunctions/sum.htm)

#### 图表表达式

概述

数据集包含按地区划分的商店的销售数据。公司希望汇总销售额。

打开数据加载编辑器，并将下面的加载脚本添加到新部分。

加载脚本包含：

* 加载到名为 `Example` 的数据表中的数据集。

* 数据表中有以下字段：

  * `Month`

  * `SalesProduct`

  * `Region`

  * `Sales`

加载脚本

```
Example:
Load * inline [
Month,SalesProduct, Region, Sales
2024-01-01, T-shirt, East, 100
2024-01-01, T-shirt, West, 120
2024-01-01, Jeans, East, 200
2024-01-01, Jeans, West, 180
2024-02-01, T-shirt, East, 150
2024-02-01, T-shirt, West, 130
2024-02-01, Jeans, East, 250
2024-02-01, Jeans, West, 220
];
```

结果

加载数据并打开工作表。创建一个新的透视表，并将这些字段添加为行维度：

* `Month`

* `Region`

将此字段添加为列维度：

* `SalesProduct`

创建以下度量：

* `=Sum(Sales)`，计算每种产品的总计销售额。

要展开透视表以查看所有行，请在属性面板的外观下选择演示。在行下，选择完全展开。

Results table

| Month<br>Region | SalesProduct |  |
| --- | --- | --- |
| Jeans | T-shirt |  |
| 2024-01-01 | 380 | 220 |
| East | 200 | 100 |
| West | 180 | 120 |
| 2024-02-01 | 470 | 280 |
| East | 250 | 150 |
| West | 220 | 130 |

结果显示了按 `Month`和 `Region` 计算的每种 `SalesProduct` 的销售额，以及每种 `Month` 的汇总总额。

## 了解详情

* [集合分析](https://help.qlik.com/zh-CN/sense/May2026/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/SetAnalysis/set-analysis-expressions.htm)
* [定义聚合范围](https://help.qlik.com/zh-CN/sense/May2026/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/define-aggregation-scope.htm)