Source: https://dev-docs.yueshu.com.cn/v5.3.2/database-gql-reference/variable-definition/agg/sum_agg/ Documentation version: v5.3.2 # SumAgg `SumAgg`聚合器值变量(`SumAgg`)用于维护所有输入值的聚合结果,其中`T`表示输入值的数据类型。其聚合行为取决于所指定的数据类型: - 数值类型(`INT`、`DOUBLE`):计算输入值的数学总和。 - 字符串类型(`STRING`):按处理顺序对输入字符串进行拼接。请注意,拼接时没有隐式的分隔符(例如空格),如果您需要分隔符,必须显式添加。 ## 声明语法 语法图源码 sum_agg_declaration ```` sum_agg_declaration ::= 'NODE'? 'VALUE' aggregator_value_variable 'SumAgg' '<' ('INT8'|'INT16'|'INT32'|'INT64'|'FLOAT'|'DOUBLE'|'STRING') '>' '=' value_expression ```` 关于声明语法中参数的详细信息,请参见[参数](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/)操作。 ## 返回类型 ```` SumAgg -> T ```` 返回类型与声明时指定的类型`T`相同。 ## 示例 以下示例基于 [CREATE TEMPORARY GRAPH](https://dev-docs.yueshu.com.cn/v5.3.2/database-gql-reference/ddl/graph-projection/create/) 中创建的临时图`#movie_temporary_graph`。 ### 全局 SumAgg 聚合值变量 ```` ''' USE #movie_temporary_graph { VALUE global_sum_int SumAgg = 0 VALUE global_sum_double SumAgg = 0.0 VALUE global_sum_string SumAgg = "" -- INT 类型:累加整数值 SET @global_sum_int += 3 // sum: 3(0 + 3) SET @global_sum_int += 4 // sum: 7(3 + 4) SET @global_sum_int += 5 // sum: 12(7 + 5) -- DOUBLE 类型:累加浮点数值 SET @global_sum_double += 3.14 // sum: 3.14(0.0 + 3.14) SET @global_sum_double += 4.56 // sum: 7.7(3.14 + 4.56) SET @global_sum_double += 5.3 // sum: 13.0(7.7 + 5.3) -- STRING 类型:拼接字符串 SET @global_sum_string += "Hello" // sum: "Hello"("" + "Hello") SET @global_sum_string += " " // sum: "Hello "("Hello" + " ") SET @global_sum_string += "World" // sum: "Hello World"("Hello " + "World") RETURN @global_sum_int, @global_sum_double, @global_sum_string } ''' ```` 返回: ```` +-----------------+--------------------+--------------------+ | @global_sum_int | @global_sum_double | @global_sum_string | +-----------------+--------------------+--------------------+ | 12 | 13.0 | Hello World | +-----------------+--------------------+--------------------+ ```` ### 点绑定 SumAgg 聚合值变量 ```` ''' USE #movie_temporary_graph { NODE VALUE node_sum SumAgg = 0 MATCH (a@Actor WHERE a.id IN [3,4]) PER NODE (a) { SET a.@node_sum += 1 // 将每个演员的求和值加 1 } PER NODE (a) { LOG_INFO("a.name: ",a.name, " a.id: ",a.id, " a.@node_sum: ",a.@node_sum) } } ''' ```` 返回: ```` Log: 2025-08-08T08:29:51.496032 INFO - a.name: Carrie Fisher a.id: 4 a.@node_sum: 1 2025-08-08T08:29:51.496032 INFO - a.name: Harrison Ford a.id: 3 a.@node_sum: 1 ````