首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >cypher,neo4j:查询路径上子路径的属性的连乘累计?

cypher,neo4j:查询路径上子路径的属性的连乘累计?

提问于 2020-06-09 16:33:59
回答 0关注 0查看 401

路径入图所示,每条边上都有个属性:s,代表持股数量,为一个数值,新建路径

代码语言:js
复制
create p=(:COMPANY{value:'Y')<-[:STAKE{s:0.8]-(:COMPANY{value:'A')<-[:STAKE{s:1]-(:COMPANY{value:'B')-[:STAKE{s:1]->(:COMPANY{value:'C')
    -[:STAKE{s:1]->(:COMPANY{value:'D')-[:STAKE{s:1]->(:COMPANY{value:'E')-[:STAKE{s:1]->
    (:COMPANY{value:'F')-[:STAKE{s:0.9]->(:COMPANY{value:'G')
return p

match (n:COMPANY{value:'B'),(m:COMPANY{value:'G')
create p=(n)-[:STAKE{s:0.2]->(:COMPANY{value:'C1')
    -[:STAKE{s:1]->(:COMPANY{value:'D1')-[:STAKE{s:1]->(:COMPANY{value:'E1')-[:STAKE{s:1]->
    (:COMPANY{value:'F1')-[:STAKE{s:1]->(m)
return p

效果如图
效果如图

目的:B到G路径(有两条,路径1和路径2),计算每条路径上的边相乘,在把路径1得到的结果和路径2得到的结果相加,作为B到G的最终值1,同样,计算B到Y同一路径上每条边相乘后,不同路径的累加结果,作为最终值2,然后同时输出最终值1和最终值2

尝试计算

代码语言:js
复制
match p1=(n:COMPANY{value:'B'})-[:STAKE*1..5]-(n:COMPANY{value:'G'}),p2=n:COMPANY{value:'B'})-
[:STAKE*1..5]-(n:COMPANY{value:'Y'}) with p1,reduce(total=1.0, n in relationships(p1)|total*n.S)  as acc return sum(acc)

发现结果 不对,然后直接

代码语言:js
复制
match p1=(n:COMPANY{value:'B'})-[:STAKE*1..5]-(n:COMPANY{value:'G'}),p2=n:COMPANY{value:'B'})-
[:STAKE*1..5]-(n:COMPANY{value:'Y'}) return relationships(p1)

发现返回的边重复了很多,不知怎么回事?还有就是,怎么能同时计算路径p1的结果和p2的结果,同时输出?

回答

和开发者交流更多问题细节吧,去 写回答
相关文章

相似问题

相关问答用户
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档