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
我有一个银行账户及其传入转账的 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