2017-01-25 39 views
0

Neo4j的密碼noob在這裏。如何在neo4j的northwind圖中獲得所有客戶的最大訂單

使用演示羅斯文圖, 我想與他們最大的訂單(訂單與大多數產品)

很抱歉,如果這是一個愚蠢的問題,但我想不通的查詢檢索所有客戶。

我嘗試:

MATCH (c :Customer)-->(o :Order)-->(p :Product) 
WITH c,o, count(p) as cp ORDER BY cp DESC LIMIT 1 
RETURN c,o 

但只返回一個與他的最大一筆訂單的客戶,但我需要所有的客戶與他們各自的最大一筆訂單列表。

+0

告訴我們你的嘗試有多遠。 –

+0

MATCH(C:客戶) - >(鄰:訂單) - >(p爲產品) WITH C,O,計數(P)作爲CP ORDER BY CP DESC LIMIT 1 RETURN C,O 這隻返回一個客戶,他的最大訂單, 我需要相同,但對所有客戶 –

回答

2

問題是限制適用於整個以前的結果。您需要爲每位客戶訂購collect訂單和cp,並獲得第一名。例如:

MATCH (c :Customer)-->(o :Order)-->(p :Product) 
WITH c, o, count(p) as cp ORDER BY cp DESC 
WITH c, collect({order: o, count: cp}) as orders 
RETURN c.companyName, 
     orders[0]['order'] as o, 
     orders[0]['count'] as cp 
ORDER BY cp DESC 
+0

就是這樣。謝謝! 最終表格應該是'MATCH(c:Customer) - >(o:Order) - >(p:Product) WITH c,o,count(p)as cp ORDER BY cp DESC WITH c,collect {order:o,count:cp})作爲訂單 RETURN c, orders [0] ['order'] as o' –

相關問題