我对cypher和Neo4j还是很陌生,我正在尝试运行一个特定的查询,但是我不确定如何使用cypher来表达它。
我正在使用销售报告数据集,节点类型之一是实际销售的产品。该产品具有3个属性:名称,ID,利润。因此,节点是通过其ID而不是其名称来唯一标识的。例如,我有在法国以X Profit出售的香蕉和在西班牙以Y Profit出售的香蕉。这是两个不同的节点,将它们分开的是它们的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排序
如果我的问题还不够清楚,请这么说。
谢谢!
答案 0 :(得分:1)
您可以使用sum function
来获取一组数值的总和。
这里的分组键是Name
节点的Product
属性。
MATCH (p:Product)
RETURN p.Name as productName, sum(p.Profit) as totalProfit
ORDER BY totalProfit DESC