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