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.

Reply via email to