0
我有以下图表,并且有兴趣从a1开始获取叶节点的所有金额的总和。Cypher聚合路径子集
然而,与CYPHER它需要所有的路径到并最终的结果是24而不是12使用SUM查询。 例如
match (:A {name:'a1'})<-[:BA]-(:B)-[:BC]->(c:C)-[cd:CD]->(d:D)
return d.name, SUM(cd.amount)
我的查询应该是什么样子?
下面是创建图的密码。
节点:
create (a1:A {name:'a1'}), (b1:B {name:'b1'}), (b2:B {name:'b2'}),
(c1:C {name:'c1'}), (c2:C {name:'c2'}), (d1:D {name:'d1'})
RELS:
match (a1:A {name:'a1'}), (b1:B {name:'b1'}), (b2:B {name:'b2'}),
(c1:C {name:'c1'}), (c2:C {name:'c2'}), (d1:D {name:'d1'})
merge (a1)<-[:BA]-(b1)
merge (a1)<-[:BA]-(b2)
merge (b1)-[:BC]->(c1)
merge (b1)-[:BC]->(c2)
merge (b2)-[:BC]->(c1)
merge (b2)-[:BC]->(c2)
merge (c1)-[:CD {amount: 5}]->(d1)
merge (c2)-[:CD {amount: 7}]->(d1)
尝试与d.name更换 “返回d.name为DNAME,SUM(cd.amount)”,” AS DNAME,DISTINCT(CD)为CDD RETURN DNAME,SUM (cdd.amount)“ –
谢谢@TimKuehn。看起来像'distinct'需要成为'with'之后的第一个关键字。所以这个作品: match(:A {name:'a1'})< - [:BA] - (:B) - [:BC] - >(c:C) - [cd:CD] - >(d :D) 使用不同的d.name AS dname,cd RETURN dname,SUM(cd.amount)作为总数 – superkruger