簡體   English   中英

匹配具有相同屬性的節點之間的關系

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM