我试图找到图表中具有高于平均连接数的所有节点,例如:
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会有所帮助,但这只会产生错误。
答案 0 :(得分:1)
只是快进来。您也可以在一个查询中使用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;
答案 1 :(得分:0)
您必须使用两个查询执行此操作:
一个查询,以获取平均连接数:
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