Neo4j 聚合后计算
我是Neo4j的新手,我觉得自己被简单的操作绊住了,这些操作是我在常规SQL中使用子查询来解决的 如何减去两行结果?我已将结果分组,并希望返回它们之间的差异:Neo4j 聚合后计算,neo4j,cypher,Neo4j,Cypher,我是Neo4j的新手,我觉得自己被简单的操作绊住了,这些操作是我在常规SQL中使用子查询来解决的 如何减去两行结果?我已将结果分组,并希望返回它们之间的差异: MATCH (seguidores:RelevantTwitterUser {location:"Madrid"})-[:FOLLOWS]->(seguidos:RelevantTwitterUser {location:"Barcelona"}) WITH COLLECT({origen:seguidores.location,
MATCH (seguidores:RelevantTwitterUser {location:"Madrid"})-[:FOLLOWS]->(seguidos:RelevantTwitterUser {location:"Barcelona"})
WITH COLLECT({origen:seguidores.location, user:seguidores.userId}) AS ROWS
MATCH (seguidores:RelevantTwitterUser {location:"Barcelona"})-[:FOLLOWS]->(seguidos:RelevantTwitterUser {location:"Madrid"})
WITH ROWS + COLLECT({origen:seguidores.location, user:seguidores.userId}) AS allRows
UNWIND allRows AS ROW
RETURN ROW.origen, COUNT(ROW.user)
对于输出:
使用
如果您想了解此查询的工作原理,并在需要修改此查询时避免获取错误的计数,则应阅读(如COUNT
)上的文档。了解分组键
(例如,最后一个WITH
子句中的LOC
和count
如何影响聚合函数的行为,这一点尤为重要
回答使用
非常感谢两个答案。第一次是我试图表演我搞砸了工会和募捐的东西。谢谢你的回答,这很清楚。第二个比较优雅,我会读关于大小的,它有一个非常方便的语法。
WITH "Madrid" AS loc1, "Barcelona" AS loc2
MATCH (:RelevantTwitterUser{location:loc1})-[:FOLLOWS]->(:RelevantTwitterUser{location:loc2})
WITH loc1, loc2, COUNT(*) AS count1
MATCH (:RelevantTwitterUser{location:loc2})-[:FOLLOWS]->(:RelevantTwitterUser{location:loc1})
WITH loc1, loc2, count1, COUNT(*) AS count2
RETURN loc1, count1, loc2, count2, count1 - count2 AS diff
WITH "Madrid" AS loc1, "Barcelona" AS loc2
WITH loc1, loc2,
SIZE((:RelevantTwitterUser{location:loc1})-[:FOLLOWS]->(:RelevantTwitterUser{location:loc2})) AS count1,
SIZE((:RelevantTwitterUser{location:loc2})-[:FOLLOWS]->(:RelevantTwitterUser{location:loc1})) AS count2
RETURN loc1, count1, loc2, count2, count1 - count2 AS diff