2017-01-25 2 views
0

Neo4j's cypher noob здесь.Как получить самый большой заказ клиента в графике северного ветра neo4j

Используя демо Борей график, я хотел бы получить все клиент с их самым большим заказом (заказ с большинством продуктов)

Извините, если это глупый вопрос, но я не могу понять запрос ,

Моей попытке:

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 (с: Заказчик) -> (о: Order) -> (р: Продукт) С С, О, граф (р) ф ОКОЕК ф 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: Заказчик) -> (o: Заказ) -> (p: Продукт) С c, o, count (p) как cp ORDER BY cp DESC С c, {order: o, count: cp}) в качестве заказов RETURN c, заказов [0] ['order'] as o' –

Смежные вопросы