2017-01-29 14 views
0

私のデータベースには、アカデミー賞のノミネートに関する情報が含まれています。特定のプロパティを持つ2つのノード間の接続数をカウントする必要があります

「最高のディレクター」のオスカーを何回も受賞したディレクターが何人いるか知りたい。

私が望む結果、候補者のリストにはかなり手が届きません。私がしてきた 最も近いが、このクエリを使用することです:

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で機能・カウント(...)を集約する

無効な使用を言うエラーが発生しました誰かが私を助けることができる「n1.win =真の AND(n1.win)> 1" カウント) "WHERE c.name =" 最優秀監督

を:(96オフセット)これとともに?

答えて

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上のドキュメント:

MATCHまたはオプションMATCH句のパターンに制約を追加したり、フィルタ

WITH句の結果

関連する問題