# 带聚合函数的嵌套聚合函数

使用 TOTAL 嵌套并非总是足以应付一切。要获得更通用的嵌套，您必须结合使用高级聚合函数与计算的维度。

示例：

以下数据已从脚本读取：

![Example data table with SalesRep and Customer fields](https://help.qlik.com/zh-CN/qlikview/May2024/Subsystems/Client/Content/Resources/Images/ex_gen_NestedCalc.png)

有关此数据的显然问题是：“每一名销售代表拥有多少名客户？”。

此问题使用标准 QlikView 表很容易回答：

根据刚才获得的知识，可能会提出一些新问题：“多少销售代表仅有一名客户？多少销售代表有三名或更多客户？”。

如果您忽略此简单案例中的事实：您可以轻松地手动计数表达式列中的数字，这些是需要二阶聚合顺序的问题类型。计算所需的数据不存在于原始字段中，也无法从原始字段直接计算。

如同新图表中的维度一样，您需要找到在图表中使用表达式列的方法。这可通过使用高级聚合函数获得。

为了将第一个图表的计算作为新图表中的内部图表计算执行，您需要对该维度使用以下语句：

`=Aggr(Count(Customer),SalesRep)`

然后，您需要输入新图表的以下表达式：

`Count(Distinct SalesRep)`

DISTINCT 限定符是必要的，因为 QlikView 会计算基础表格的行数。

结果表会回答问题“多少名销售代表拥有 1 名、2 名、3 名客户等等？”：

必须注意两件事情：

1. 第二图表不会以任何方式要求第一图表的存在。它是完全自包含的，同时包含维度内定义的第一顺序聚合。
2. 嵌套的可能性至此未结束。当然，高级聚合函数的维度参数可能包含计算的维度，这反过来又使用高级聚合函数。但是，当经过三级聚合时，放松追踪您正在做的事情相对容易。

## 了解详情

* [Aggr](https://help.qlik.com/zh-CN/qlikview/May2024/Subsystems/Client/Content/QV_QlikView/ChartFunctions/aggr.htm)