聚合函数max的使用无效

时间:2017-09-12 13:02:17

标签: neo4j cypher

{{1}}

以上查询导致以下错误:

  

在此上下文中使用聚合函数max(...)无效(第1行,   第61栏(抵消:60))

2 个答案:

答案 0 :(得分:2)

此查询应返回具有最大计数的m个节点的集合。它只需要执行一次MATCH操作,并且应该具有相对的性能。

MATCH (n)-[:LIKES]->(m)
WITH m, COUNT(n) AS cnt
WITH COLLECT({m: m, cnt: cnt}) AS data, MAX(cnt) AS maxcnt
RETURN REDUCE(ms = [], d IN data | CASE WHEN d.cnt = maxcnt THEN ms + d.m ELSE ms END) AS ms;

答案 1 :(得分:1)

如果你只是想找到一个导致它的LIKES关系最多的节点,那么你可以添加一个ORDER BY和LIMIT:

 MATCH (n)-[:LIKES]->(m)
  WITH m, count(n) AS cnt
 ORDER BY cnt DESC
 LIMIT 1
RETURN m

但是,该查询的局限性在于,如果多个节点具有最大入站关系数,则不会返回那些绑定节点。要实现这一结果,您可以尝试这样的事情:

 MATCH (n)-[:LIKES]->(m)
  WITH m, count(n) AS cnt
  WITH MAX(cnt) AS maxcnt
 MATCH (o)
 WHERE size((o)<-[:LIKES]-()) = maxcnt
RETURN o