Neo4j Cypher 查询中的条件和

Conditional sum in Neo4j Cypher query

我有一个银行账户及其传入转账的 Neo4j 数据库。每次传输发生在某个小时。有 24 个 hourNodes 代表每个不同的小时 (1,2,...,24)。我需要知道每小时转移到每个帐户的总金额,就像这样(是的,结果 table 中我确实需要 25 列):

账户名 totalH1 totalH2 ... totalH24
我的账户 #1 19 50 ... 34
我的账户 #2 5 14 ... 99
...

这个简单的查询:

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

以不同的格式给出结果:

accountName 小时总计
我的账户 #1 1 19
我的账户 #1 2 50
...
我的帐户#1 24 34
我的账户 #2 1 5
...

我无法更改数据库结构。我将如何以描述的格式向 return 数据写入查询?

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

您基本上想要的是每个名称一行和一个有序的总和列表。您可以使用关心排序的 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