使用密码查询生成聚合边缘

时间:2013-09-25 06:53:08

标签: neo4j cypher

假设我有rootNodes为:A和B,完整关系路径为:

A -- knows ---C --sell(amt=100,date=jan08) -- G
A -- knows ---C --sell(amt=200,date=jan08) -- G
A -- knows ---C --sell(amt=300,date=feb08) -- G
A -- knows ---D --sell(amt=1100,date=mar08) -- H

B -- knows ---E --sell(amt=1400,date=dec08) -- I
B -- knows ---E --sell(amt=2400,date=nov08) -- I
B -- knows ---E --sell(amt=300,date=dec08) -- I
B -- knows ---F --sell(amt=1700,date=apr08) -- J

其中A,B将rootName作为属性,所有其他C,G,D,H,E,I,F,J都将customerName作为属性。

现在我想创建像:

这样的边缘
C-- jan08(Tamt=300) --G
C-- feb08(Tamt=300) --G
D-- mar08(Tamt=1100) --H

E-- dec08(Tamt=1700) --I
E-- nov08(Tamt=2400) --I
F-- apr08(Tamt=1700) --J

如果让我们传递所有根节点(A,B等),那么它将创建边缘groupBy MMM YY,其中sum(amount)作为该边缘的属性。在google group上有了一个想法。但是不知道如何自动化查询,以便为所有根子节点创建聚合边缘。

我尝试过:

START customerName=node(483), b = node(485, 498, 500)
MATCH customerName-[s:Sell]->b
WITH s.transactionDate AS date, customerName, b, sum(s.transactionAmount) AS total 
CREATE customerName-[:sales_summary { date:date, tamt:total }]->b

这里是如何用日期(MMM YY格式)边缘替换sales_summary边缘。

[其中,A,B具有rootName作为属性,所有其他C,G,D,H,E,I,F,J具有customerName作为属性。所以在查询customerName和b中实际上都是                客户]

但是在上面我必须逐个手动传递companyName和b。有没有办法传递所有companyName - >卖出 - > b单拍。这样它就可以根据MATCH条件自动执行查询和构建边缘。

干杯,

0 个答案:

没有答案