1 function构造
然后使用这些function构造一个AggregationNode
但是这些函数的具体实现在什么地方,需要进一步确认
2 求平均
2-1 求平均的调用栈
在当前操作符获取到一个page之后,会调用next操作符的addinput方法,该方法会最终调用AverageAggregations类的combine方法,把聚合器当前的状态和新的值进行combine,调用关系如下:
调用一次combine方法后,doublevalues会增加一个page包含的部分的聚合结果,如果是avg函数,会变成如下所示:
[1.1382025837990004E10, 1.1340621863930069E10, 0.0,。。。
其中的数值代表了一组的总和而不是平均值,平均值需要在final阶段进行计算
longvalues代表了一组的总的数量,用于在最后阶段进行最终的求平均计算
2-2求平均的过程
2-2-1 partial阶段
部分聚合阶段,这个阶段不计算平均值,而是记录一个分组的总和,用varchar来存储(是否是因