# Count - 图表函数

Count() 用于聚合每个图表维度中值、文本和数字的数量。

语法：

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

返回数据类型： 整数

参数

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

示例：图表表达式

| 示例 | 结果 |
| --- | --- |
| `Count(OrderNumber)` | 返回可以具有 `OrderNumber` 的值的行数。所有记录，即使是空的记录，都会被计算在内。<br><br>信息注释“0”计为一个值，而不是一个空单元格。但是，如果维度的度量聚合为 0，则图表中将不包括该维度。 |
| `Count(Customer)` | 计算所有行中的出现次数。 |
| `Count(DISTINCT [Customer])` | `DISTINCT` 限定符将 `Count` 限制为仅计算唯一的出现项。 |
| `Count(OrderNumber)/Count({1} TOTAL OrderNumber)` | 表达式会将所选客户的订单数量返回为相对于所有客户订单的百分比形式。 |
| `Count(TOTAL <Product> OrderNumber)` | 仅返回所选客户的产品订单数。空单元格也计算在内。 |

## 示例 - Count 基本原理

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

#### 图表表达式

概览

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

加载脚本包含：

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

* 数据表中有以下字段：

  * `Customer`

  * `Product`

  * `OrderNumber`

  * `UnitSales`

  * `UnitPrice`

加载脚本

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

结果

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

* `Customer`

创建以下度量：

* `=Count(OrderNumber)`，计算订单数量。

* `=Count(Customer)`，计算客户记录的数量。

* `=Count(DISTINCT Customer)`，统计不同客户的数量。

* `=Count(OrderNumber)/Count({1} TOTAL OrderNumber)`，将所选客户订单的比率计算为客户订单总数的比率。

* `=Count(TOTAL <Product> OrderNumber)`，仅统计所选客户的产品订单数量（空单元格被计算在内）。

Results table

| Customer | Count(OrderNumber) | Count(Customer) | Count(DISTINCT Customer) | Count(OrderNumber)/Count({1} TOTAL OrderNumber) | Count(TOTAL &lt;Product&gt; OrderNumber) |
| --- | --- | --- | --- | --- | --- |
| Totals | 10 | 10 | 4 | 1 | 10 |
| Astrida | 3 | 3 | 1 | 0.3 | 10 |
| Betacab | 3 | 3 | 1 | 0.3 | 10 |
| Canutility | 2 | 2 | 1 | 0.2 | 10 |
| Divadip | 2 | 2 | 1 | 0.2 | 10 |

从结果来看，我们可以观察到以下几点：

* 第一度量：数据集中有 `10` 个订单记录。

* 第二度量：数据集中有 `10` 个客户记录。

* 第三度量：数据集中有 `4` 个不同的（独特）客户。

* 第四度量：由于未应用任何选择而返回 `1`。如果选择客户 `Canutility`，则值将更改为 `0.2`，因为数据集中的 `10` 总记录中有此客户的 `2` 个订单记录。

* 第五度量：由于未应用任何选择而返回 `10`。如果选择客户 `Astrida` 和 `Canutility`，则值将更改为 `5`，因为这是为这些客户下的产品订单数（空单元格也将被计算在内）。

## 示例 - 使用计数查找每种产品的销售数量

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

#### 图表表达式

概览

数据集包含商店销售的数据。您想知道每种产品的销售量。

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

加载脚本包含：

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

* 数据表中有以下字段：

  * `Product`

  * `Sales`

  * `Region`

  * `Status`

加载脚本

```
Example:
Load * inline [
Product,Sales,Region,Status
Apple, 100, North, Completed
Banana, 80, South, Pending
Carrot, 50, East, Completed
Apple, 120, North, Completed
Banana, 90, South, Completed
Carrot, 60, West, Pending
Apple, 110, North, Completed
Banana, 85, South, Completed
Carrot, 55, East, Pending
];
```

结果

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

* `Product`

创建以下度量：

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

* `=Count({<Status={'Completed'}>} Sales)`，计算已完成订单的销售数量。

* `=Count({<Status={'Pending'}>} Sales)`，计算订单尚未处理的销售数量。

* `=Count({<Region={'North'}>} Sales)`，计算 `North` 地区的订单数量。

Results table

| Product | Count(Sales) | Count({&lt;Status={'Completed'}&gt;} Sales) | Count({&lt;Status={'Pending'}&gt;} Sales) | Count({&lt;Region={'North'}&gt;} Sales) |
| --- | --- | --- | --- | --- |
| Totals | 9 | 6 | 3 | 3 |
| Apple | 3 | 3 | 0 | 3 |
| Banana | 3 | 2 | 1 | 0 |
| Carrot | 3 | 1 | 2 | 0 |

`Count` 函数的输出返回按产品划分的销售订单总数的细分，以及已完成的订单数和尚未处理的订单数。最后一个度量返回 `North` 地区的销售记录计数。