2016-08-08 20 views
0

を返す複数:のNeo4j /サイファー - 句は、私は、次のクエリを持っていない結果

この1つは、期待される結果を返します。

MATCH (u:User)-[pw_rel:PAYED_WITH]->(ext_acc:ExtAccount) 
WHERE pw_rel.processed_at > 0 
WITH u, COUNT(DISTINCT ext_acc) as accs 
WHERE accs > 2 
RETURN u 

この1つは何も返しませんが:

MATCH (u:User)-[pw_rel:PAYED_WITH]->(ext_acc:ExtAccount) 
WITH u, pw_rel, ext_acc, COUNT(DISTINCT ext_acc) as accs 
WHERE pw_rel.processed_at > 0 AND accs > 2 
RETURN u 

なぜですか?私は何が欠けていますか?

答えて

1

これは、集計と他の列のコンテキストでの意味と関係があります。つまり、存在する他の非集約列がグループ化キーとして機能します。

最初のクエリでは、唯一のグループ化キーはuです。これは、あなたの出力が各ユーザーのすべてのextアカウントの数であることを意味します。

2番目のクエリでは、グループ化キーにu、pw_rel、ext_accが含まれています。したがって、各ユーザー/ pw-rel/ext_accの組み合わせ(または行)ごとにすべてのextアカウントの数を返します。これは非常に有用ではありません。各行に1つのカウントが戻ってくる可能性が高いため、WHERE句が2を超える行はありません。WITHのext_acc列を削除しても、 pw-relカラムでは1のカウントに制限されます(ユーザごとに1つのext_acc/pw_relがあるため)。

他の列は、集計関数がグループ化しているものと、戻ってくる列を変更することは容易に理解できます。

数(ext_acc) - ユーザー、およびuは、pw_relは、ユーザカウント

あたりのextアカウント(ext_acc)のカウント - すべての内線の総数は

U、カウント(ext_acc)を占めます - ユーザー、支払い済みの関係、ユーザーごとのすべての外部アカウントの数、およびそのユーザーからの支払い済みの関係の数

u、pw_rel、ext_acc、count(ext_acc) - ユーザー、支払い関係、extアカウント、およびユーザーごとのすべての外部アカウントの数とそのユーザーから特定のextアカウントへの支払い関係。

+0

ありがとうございました! – lxngxr

関連する問題