SumAgg¶
SumAgg聚合器值变量(SumAgg<T>)用于维护所有输入值的聚合结果,其中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
关于声明语法中参数的详细信息,请参见参数。
初始值¶
从声明语法中可见,声明时必须指定初始值。
输入类型与支持的操作¶
输入类型必须为声明时指定的类型T。
支持赋值与聚合操作。
返回类型¶
SumAgg<T> -> T
返回类型与声明时指定的类型T相同。
示例¶
以下示例基于 CREATE TEMPORARY GRAPH 中创建的临时图#movie_temporary_graph。
全局 SumAgg 聚合值变量¶
'''
USE #movie_temporary_graph {
VALUE global_sum_int SumAgg<INT> = 0
VALUE global_sum_double SumAgg<DOUBLE> = 0.0
VALUE global_sum_string SumAgg<STRING> = ""
-- 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<INT> = 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