如何在neo4j的北风图中获得所有客户的最大订单

时间:2017-01-25 15:13:20

标签: neo4j cypher

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 

但只返回一个订单最多的客户,但我需要所有客户的清单及其各自的最大订单。

1 个答案:

答案 0 :(得分: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