我需要统计具有某个属性的两个节点之间的连接数

问题描述 投票:0回答:1

我的数据库包含有关奥斯卡金像奖提名的信息。

我想知道有多少导演多次获得奥斯卡“最佳导演”奖。

我无法完全得到我想要的结果,即提名名单。 我最接近的是这个查询:

MATCH (n:Nominee)-[n1:NOMINATED]->(c:Category)
WHERE c.name="Best Director" AND n1.win=true
RETURN count(n1.win), n.name
ORDER BY n.name;

返回导演姓名以及他们获得奥斯卡奖的次数。

我尝试做类似的事情

MATCH (n:Nominee)-[n1:NOMINATED]->(c:Category)
WHERE c.name="Best Director" AND n1.win=true AND count(n1.win)>1
RETURN n.name;

但出现错误提示

在此上下文中聚合函数 count(...) 的使用无效(行 2,第 50 列(偏移量:96))“WHERE c.name =“最佳导演”和 n1.win=true AND 计数(n1.win)>1"

有人可以帮我吗?

neo4j cypher graph-databases
1个回答
0
投票

首先使用

WITH
来汇总胜利。根据文档:

[...]WITH 用于引入聚合,然后可以在 WHERE 的谓词中使用聚合。这些聚合表达式在结果中创建新的绑定。与 RETURN 一样,WITH 也可以使用别名作为绑定名称将别名表达式引入到结果中。

所以像这样的查询应该有效:

MATCH (n:Nominee)-[n1:NOMINATED]->(c:Category)
WHERE c.name="Best Director" AND n1.win=true
WITH n, count(n1.win) AS winCount
WHERE winCount > 1
RETURN n.name;

另请参阅

WHERE
上的文档:

WHERE 向 MATCH 或 OPTIONAL MATCH 子句中的模式添加约束,或过滤WITH 子句的结果。

© www.soinside.com 2019 - 2024. All rights reserved.