[英]Match relationships between nodes with the same property
我有以下图表:
CREATE (a:Node)
CREATE (b:Node)
CREATE (c:Node)
CREATE (d:Node)
CREATE (a)-[:rel {referenceId: 1234, amount: 2}]->(b)
CREATE (b)-[:rel {referenceId: 1234, amount: 1}]->(c)
CREATE (b)-[:rel {referenceId: 1234, amount: 0.5}]->(d)
CREATE (a)-[:rel {referenceId: 4567, amount: 4}]->(b)
CREATE (b)-[:rel {referenceId: 4567, amount: 1}]->(c)
CREATE (b)-[:rel {referenceId: 4567, amount: 3}]->(d)
我正在寻找一种方法来计算从 a 发送到 b 和从 b 发送到 c/d 的金额之间的差异,具体取决于 referenceId 但不使用特定的 referenceId。
所以我正在寻找类似下面的半代码的东西:
MATCH (a)-[in:rel]->(b)-[out:rel]->(c) WHERE in.referenceId == out.referenceId RETURN SUM(in.amount)-SUM(out.amount)
有人知道我该怎么做吗?
也许你需要按照referenceId来做?
MATCH (a)-[in:rel]->(b)-[out:rel]->(c)
WHERE in.referenceId = out.referenceId
RETURN in.referenceId as referenceId,
SUM(in.amount)-SUM(out.amount) as diff
结果:
referenceId diff
4567 4
1234 2.5
您也可以通过某种方式来查找非零差异:
MATCH (a)-[in:rel]->(b)-[out:rel]->(c)
WHERE in.referenceId = out.referenceId
WITH in.referenceId as referenceId,
SUM(in.amount)-SUM(out.amount) as diff
WHERE diff <> 0
RETURN referenceId, diff
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.