Source: https://dev-docs.yueshu.com.cn/v5.3.2/database-gql-reference/variable-definition/agg/avg_agg/ Documentation version: v5.3.2 # AvgAgg AvgAgg 聚合值变量(`AvgAgg`)用于对所有类型为`T`的输入进行平均值计算。 ## 声明语法 语法图源码 avg_agg_declaration ```` avg_agg_declaration ::= 'NODE'? 'VALUE' aggregator_value_variable 'AvgAgg' '<' ('INT8'|'INT16'|'INT32'|'INT64'|'FLOAT'|'DOUBLE') '>' ```` 关于声明语法中参数的详细信息,请参见[参数](https://dev-docs.yueshu.com.cn/v5.3.2/database-gql-reference/variable-definition/agg/#_6)。 ## 初始值 从声明语法中可见,声明时不能指定初始值。 ## 输入类型与支持的操作 输入类型必须为声明时指定的类型`T`。 支持[赋值与聚合](https://dev-docs.yueshu.com.cn/v5.3.2/database-gql-reference/set/)操作: - 赋值操作(`=`):该操作将重置聚合值变量的值。例如`SET @avg_agg = 10`将清除聚合值变量`avg_agg`中的值,并将其设置为 10。此时,它的总和为 10,数量为 1,平均值为 10。 - 聚合操作(`+=`):该操作将值累加到聚合值变量中并根据累积值重新计算平均值。例如,如果`avg_agg`已有值,再执行`SET @avg_agg += 10`,它不会清除已有值,而是先将值`10`添加到`avg_agg`的累积和中并增加计数,然后根据所有累积的值自动更新其平均值。 ## 返回类型 ```` AvgAgg -> DOUBLE ```` 无论是哪种输入类型,返回类型始终为`DOUBLE`。 ## 示例 以下示例基于 [CREATE TEMPORARY GRAPH](https://dev-docs.yueshu.com.cn/v5.3.2/database-gql-reference/ddl/graph-projection/create/) 中创建的临时图`#movie_temporary_graph`。 ### 全局 AvgAgg 聚合值变量 ```` ''' USE #movie_temporary_graph { VALUE global_avg AvgAgg SET @global_avg += 3 // 平均值:3.0 (总和:3,数量:1) SET @global_avg += 7 // 平均值:5.0 (总和:10,数量:2) SET @global_avg += 5 // 平均值:5.0 (总和:15,数量:3) LOG_INFO("@global_avg: ",@global_avg) SET @global_avg = 0 // avg: 0 (重置值为 0) LOG_INFO("@global_avg: ",@global_avg) } ''' ```` 返回: ```` Log: 2025-08-21T08:04:55.522902 INFO - @global_avg: 5 2025-08-21T08:04:55.524437 INFO - @global_avg: 0 ```` ### 点绑定 AvgAgg 聚合值变量 ```` ''' USE #movie_temporary_graph { NODE VALUE node_avg AvgAgg MATCH (a@User WHERE a.id IN [1,3,4])-[w@Watch]->(b@Movie) PER PATH { // 累加匹配用户对所看电影的评分并计算平均值 // 跟踪每个用户对所看电影的平均评分 SET a.@node_avg += w.rate } PER NODE (a) { LOG_INFO("a.id: ",a.id, " a.@node_avg: ",a.@node_avg) } } ''' ```` 返回: ```` Log: 2026-06-08T07:03:00.653691 INFO - a.id: 4 a.@node_avg: 2.66667 2026-06-08T07:03:00.653691 INFO - a.id: 1 a.@node_avg: 4.77778 2026-06-08T07:03:00.653691 INFO - a.id: 3 a.@node_avg: 3.75 ````