我的数据库包含有关奥斯卡金像奖提名的信息。
我想知道有多少导演多次获得奥斯卡“最佳导演”奖。
我无法完全得到我想要的结果,即提名名单。 我最接近的是这个查询:
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"
有人可以帮我吗?
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 子句的结果。