You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Apache AGE中count聚合函数工作机制及示例分组疑问

Apache AGE聚合函数疑问解答

数据初始化语句

SELECT * FROM cypher('graph_name', $$
CREATE (:L {a: 1, b: 2, c: 3}),
       (:L {a: 2, b: 3, c: 1}),
       (:L {a: 3, b: 1, c: 2})
$$) as (a agtype);

查询语句

SELECT * FROM cypher('graph_name', $$
    MATCH (x:L)
    RETURN (x.a + x.b + x.c) + count(*) + count(*), x.a + x.b + x.c
$$) as (count agtype, key agtype);

查询输出

count | key
-------+-----
 12    | 6
(1 row)

问题解答

分组键的确定

分组键是返回列表中的x.a + x.b + x.c部分。在Cypher的聚合规则中:当RETURN子句同时包含聚合函数(如count(*))和非聚合表达式时,所有非聚合表达式会自动作为分组依据,将结果按这些表达式的取值分组。

count的计算逻辑

  1. 先计算每个节点的x.a + x.b + x.c:
    • 三个节点的计算结果均为6(1+2+3=6、2+3+1=6、3+1+2=6),因此所有节点会被归为同一个分组。
  2. count(*)的作用是统计当前分组内的节点数量,这里分组包含3个节点,所以count(*)的取值为3。
  3. 计算返回的第一个表达式:(x.a + x.b + x.c) + count(*) + count(*),代入数值后为6 + 3 + 3 = 12,这就是输出中count列的结果。
  4. key列直接取分组键的统一值6,因此最终输出仅1行数据。

内容的提问来源于stack exchange,提问作者ahmed_131313

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 20:13:24