これはの拡張である(のNeo4j:集計関数に基づいたフィルタノード)
顧客ノードのセットと、各顧客がこれらのノードに関連付けて行った注文のセットがあるとします。各注文ノードには、コストと注文が行われたストアの2つのプロパティが関連付けられています。storeAでの平均注文が300を超えているが、同時にStoreBでの平均注文が100未満である顧客を抽出したいと思います。これを行うための私の(機能していない)試みは次のとおりです。
MATCH (n0:Customer)-[]->(n1:Order {store: 'storeA'})
WITH n0, avg(n1.cost) as average_storeA WHERE average_storeA > 300
WITH (n0:Customer)-[]->(n2:Order {store: 'storeB'})
WITH n0, avg(n2.cost) as average_storeB where average_storeB < 100
return n0
問題は、行番号3のWITHステートメントがn2
意味がわからない場合にエラーを返すことです。以前のmatchステートメントの結果を新しいノードクエリ/変数が導入された新しいmatchステートメントにパイプするにはどうすればよいですか?2つの独立した一致クエリを試してから、ノードセット間の共通部分を見つけることができると思いますが、これは、すでにフィルタリングされたノードのセットの上に2番目のフィルタを適用するよりもはるかに遅いはずです。
WITH
3行目の代わりに、次のようにMATCH
前のn0
変数を使用して新しいパターンを作成する必要があります。
MATCH (n0:Customer)-[]->(n1:Order {store: 'storeA'})
WITH n0, avg(n1.cost) as average_storeA WHERE average_storeA > 300
MATCH (n0)-[]->(n2:Order {store: 'storeB'})
WITH n0, avg(n2.cost) as average_storeB where average_storeB < 100
return n0
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加