Для чего нужен запрос: Суммирование определенного свойства разных узлов одного типа - PullRequest
0 голосов
/ 05 июля 2019

Я очень новичок в Cypher и Neo4j, и я пытаюсь выполнить определенный запрос, но я не уверен, как сформулировать его с помощью Cypher.

Я работаю с отчетом о продажахнабор данных, и одним из типов узлов является фактический проданный продукт.Этот продукт имеет 3 атрибута: имя, идентификатор, прибыль.Поэтому узлы однозначно идентифицируются по их идентификатору, а не по имени.Так, например, у меня есть бананы, которые были проданы во Франции за X Profit, и бананы, которые были проданы в Испании за Y прибыль.Это два разных узла, и их разделяет их ID.

Это запрос шифра, используемый для создания графа, чтобы вы могли лучше понять его:

LOAD CSV WITH HEADERS FROM 'file:///SalesRecords.csv' AS row
MERGE (r:Region {Name: row.Region})
MERGE (c:Country {Name: row.Country})
MERGE (p:Product {Name: row.ItemType, ID: row.OrderID, Profit: 
row.TotalProfit})
MERGE (s:Channel {Name: row.SalesChannel})
MERGE (c)-[:BELONGS_TO]->(r)
MERGE (p)-[:SOLD_IN]->(c)
MERGE (p)-[:SOLD_THROUGH]->(s)

Итак, я хочу сделать следующее: Я хочу перечислитьвсе отдельные продукты по их названию и сумме по прибыли.Поэтому моим желаемым конечным результатом будет таблица с двумя столбцами productName и totalProfit, где в одной строке, например, productName будет Bananas, а totalProfit будет X + Y.

Редактировать: О, и я хотел бы заказать его по totalProfit

Если я не прояснил свой вопрос, скажите, пожалуйста.

Заранее спасибо!

1 Ответ

1 голос
/ 05 июля 2019

Вы можете использовать sum function, чтобы получить сумму набора числовых значений.

Здесь ключ группировки - это Name свойство узла Product.

MATCH (p:Product)
RETURN p.Name as productName, sum(p.Profit) as totalProfit
ORDER BY totalProfit DESC
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...