我有一个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 ...
我无法更改数据库结构。如何编写查询以返回所描述格式的数据?
答案 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