问题
Suppose I have a list of customer nodes and a list of orders each customer has placed represented as order nodes associated to these customer nodes. Each order has a cost numeric property associated to it.
I want to return those customers, whose average order is greater than a threshold. Here is some non-functioning code that exemplifies what I want:
MATCH (n0:Customer)-[]-(n1:Order)
WITH n1.cost as cost
WHERE avg(cost) > 300
RETURN n0, avg(cost)
But of course this is not quite right. How should I go about it?
回答1:
What you have is close, you just need to do the aggregation in the WITH
statement, not the WHERE
clause
MATCH (n0:Customer)-[]-(n1:Order)
WITH n0, avg(n1.cost) AS cost WHERE cost > 300
RETURN n0, cost
来源:https://stackoverflow.com/questions/45601919/neo4j-filter-nodes-based-on-aggregate-function