Hi, Which version are you using?
If you're on 2.0 then this should work: MATCH c WHERE HAS (c.A) AND HAS (c.B) WITH collect(c) AS allC RETURN reduce(total = 0, x IN allC| total + abs(x.A - x.B)) AS sum and if on 1.9 then START c=node(*) WHERE HAS (c.A) AND HAS (c.B) WITH collect(c) AS allC RETURN reduce(total = 0, x IN allC| total + abs(x.A - x.B)) AS sum These will return one row with the sum in them. Hope that's what you're looking for. If you assign a path START c=node(*) WHERE HAS (c.A) AND HAS (c.B) WITH collect(c) AS allC RETURN reduce(total = 0, x IN allC| total + abs(x.A - x.B)) AS sum then you're going to get back as many rows as there are paths which in your case is the number of nodes with both A and B properties on them- and the sum for each node. Regards Luanne On Fri, Jul 18, 2014 at 8:30 PM, <[email protected]> wrote: > Hello, > > I'm trying to use the CYPHER Reduce statement on the following: > > Some nodes in the graph have properties: .A and .B which are numeric. For > every node that has these properties, I want to take the absolute value of > the difference between the two and sum across all nodes. I've tried the > following: > > start > c=node(*) match p=(c) where has(c.A) and has(.B) return reduce(total = 0, x > in nodes(p)| total + abs(x.A > - x.B)) as sum; > > But I get an error: "Don't know how to Subtract(Property..." > > Are the math operations something I'll have to do in a separate step? > > Thanks. > > -Patrick > > -- > You received this message because you are subscribed to the Google Groups > "Neo4j" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > For more options, visit https://groups.google.com/d/optout. > -- You received this message because you are subscribed to the Google Groups "Neo4j" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.
