2015-03-13 132 views
1

我有一個Neo4j數據庫的銀行賬戶和他們的傳入轉移。每次傳輸都在一小時內完成。有24個小時節點代表每個不同的小時(1,2,...,24)。我需要知道轉移到每個賬戶每小時的總錢,像這樣的(是的,我真的需要在結果表25列!):Neo4j Cypher查詢條件總和

 
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

不知道如何精確地創建你所描述的輸出,但我們可以很容易地得到非常接近。

你基本上想要的是每行名稱和有序的和數列表。您可以使用關注訂購的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 
+0

謝謝!爲了得到我需要的東西,我稍微改變了RETURN部分:返回名稱,收集(總和)[0]爲總和H1,...,收集(總和)[23]爲總數H24 – Arturs 2015-03-15 19:17:33