Graph 查找连接数大于平均数的节点
我试图找到图中连接数高于平均数的所有节点,如:Graph 查找连接数大于平均数的节点,graph,neo4j,cypher,Graph,Neo4j,Cypher,我试图找到图中连接数高于平均数的所有节点,如: START n=node(*) MATCH n-[r]-() WITH n, count(r) AS cnt WITH n, cnt, avg(cnt) AS av WHERE cnt > av RETURN n, cnt 但是它返回0行-我相信这里的'av'等于'cnt' 我想知道从cnt创建一个集合以传递给avg是否有帮助,但这只会产生一个错误。您必须通过两个查询来完成此操作: 一个查询,获取平均连接数: START n=node
START n=node(*)
MATCH n-[r]-()
WITH n, count(r) AS cnt
WITH n, cnt, avg(cnt) AS av
WHERE cnt > av
RETURN n, cnt
但是它返回0行-我相信这里的'av'等于'cnt'
我想知道从cnt创建一个集合以传递给avg是否有帮助,但这只会产生一个错误。您必须通过两个查询来完成此操作: 一个查询,获取平均连接数:
START n=node(*)
MATCH n-[r]-()
WITH n, count(r) as rc
WITH avg(rc) as avg
RETURN avg
然后是一个查询,返回关系计数高于平均值的节点:
START n=node(*)
MATCH n-[r]-()
WITH n, count(r) as rc
WITH avg(rc) as {avg_from_first_query}
RETURN avg
您必须通过两个查询来完成此操作: 一个查询,获取平均连接数:
START n=node(*)
MATCH n-[r]-()
WITH n, count(r) as rc
WITH avg(rc) as avg
RETURN avg
然后是一个查询,返回关系计数高于平均值的节点:
START n=node(*)
MATCH n-[r]-()
WITH n, count(r) as rc
WITH avg(rc) as {avg_from_first_query}
RETURN avg
只是打电话进来。您还可以使用WITH在一个查询中执行此操作(即使使用Werner建议的相同语法)。我还通过使用长度和模式来获得计数来作弊。。。有人说这很难看,但它避免了使用聚合,从而简化了类似的内容
START n=node(*)
WITH avg(length(n--())) as avgr
START n=node(*)
WHERE length(n--()) > avgr
RETURN length(n--()) as rc, avgr, n;
刚刚插嘴。您还可以使用WITH在一个查询中执行此操作(即使使用Werner建议的相同语法)。我还通过使用长度和模式来获得计数来作弊。。。有人说这很难看,但它避免了使用聚合,从而简化了类似的内容
START n=node(*)
WITH avg(length(n--())) as avgr
START n=node(*)
WHERE length(n--()) > avgr
RETURN length(n--()) as rc, avgr, n;