微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将两个密码查询合并为单个查询和单个结果

如何解决将两个密码查询合并为单个查询和单个结果

我创建了查询获取国家(地区)的人员列表和一些平均计算:

Match (people:People)-[:LOCATED_IN]->(address:Address),(people)-[:SOME]->(calc)
RETURN address.country as name,count(*) as count,avg(calc.value) as value

哪个实例返回corect值:

name,count,value
PL,5,10
UK,3,20
US,6,30
DE,40

我想要达到的目标还在于获得他们认识的国家/地区,因此预期结果应该看起来像像这样:

name,value,kNowsAlso
PL,10,UK,US
UK,20,DE
US,30,DE,40,

我创建了一个单独的查询,以通过传递$ country来获取该信息:

Match (firstPerson:Person)-[:LOCATED_IN]->(firstAddress:Address),(firstPerson:Person)-[:FRIEND_WITH]->(secondPerson:Person),(secondPerson:Person)-[:LOCATED_IN]->(secondAddress:Address)
WHERE firstAddress.country = $country
AND firstAddress.country <> secondAddress.country
RETURN disTINCT secondAddress.country

,但是在这种情况下,我需要为第一个查询的结果集上的每个记录调用它,这似乎无效。有没有一种方法可以直接在上一个查询的结果集上调用第二个查询?还是理想情况下,将这两个查询作为一个查询

解决方法

类似的事情可能对您有用:

MATCH (calc)<-[:SOME]-(p:People)-[:LOCATED_IN]->(a1:Address)
WITH a1.country AS name,COUNT(*) AS count,AVG(calc.value) AS value,COLLECT(DISTINCT p) AS pList
UNWIND pList AS p1
OPTIONAL MATCH (p1)-[:FRIEND_WITH]->(:Person)-[:LOCATED_IN]->(a2:Address)
WHERE name <> a2.country
RETURN name,count,value,COLLECT(DISTINCT a2.country) AS knowsAlso

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。