我的数据库包含有关accademy奖项提名的信息。
我想知道有多少导演多次赢得“最佳导演”的奥斯卡奖。
我无法得到我想要的结果,一份被提名者名单。 我最接近的是这个查询:
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;
但是出现了错误
在此上下文中使用聚合函数计数(...)无效(行 2,第50栏(偏移:96))“WHERE c.name =”最佳导演“AND n1.win = true AND count(n1.win)> 1“
有人可以帮我吗?
答案 0 :(得分:0)
使用WITH
首先汇总胜利。根据文件:
[...] WITH用于引入聚合,然后可以在WHERE中的谓词中使用。这些聚合表达式在结果中创建新绑定。 WITH也可以像RETURN一样,使用别名作为绑定名称引入结果的别名表达式。
所以像这样的查询应该有效:
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子句的结果。