Neo4j Cypher查询中的条件求和

时间:2015-03-13 08:18:22

标签: neo4j cypher

我有一个Neo4j银行账户及其转账的数据库。每次转移都在某个小时进行。有24小时节点代表每个不同的小时(1,2,...,24)。我需要知道每小时转移到每个帐户的总金额,这样(是的,我在结果表中确实需要25列!):

accountName     totalH1   totalH2   ...   totalH24
My Account #1   19        50        ...   34
My Account #2   5         14        ...   99
...

这个简单的查询:

MATCH (account)->(transfer)->(hourNode)
RETURN
  account.name,
  hourNode.hour,
  sum(transfer.amount)

以不同的格式给出结果:

accountName     hour   total
My Account #1   1      19
My Account #1   2      50
...
My Account #1   24     34
My Account #2   1      5
...

我无法更改数据库结构。如何编写查询以返回所描述格式的数据?

1 个答案:

答案 0 :(得分:1)

不知道如何准确创建您所描述的输出,但我们可以很容易地接近它。

您基本上想要的是每个名称的行和有序的总和列表。您可以使用关注排序的WITH和构建列表的collect来执行此操作:

MATCH (account)->(transfer)->(hourNode)
WITH
  account.name as name,
  hourNode.hour as hour,
  sum(transfer.amount) as sum
ORDER BY name, hour
RETURN name, collect(hour) as hours, collect(sum) as sums