2016-06-02 19 views
1

Jedes Mal, wenn ich versuche, etwas in neo4j zu teilen, werde ich immer Null. Ich verwende die folgende Abfrage:Teilen in Neo4j

MATCH (m:Member)-[:ACTIVITY{issue_d:"16-Jan"}]->(l:Loan) 
MATCH (m)-[:ACTIVITY]->(p:Payments) 
WHERE l.installment<1000 AND p.total_pymnt>0 
RETURN (l.funded_amnt-p.total_pymnt),(l.funded_amnt-p.total_pymnt)/(l.funded_amnt), l.funded_amnt, p.total_pymnt, m.member_id 
LIMIT 1000; 

ich sicherstellen, überprüft, dass meine Werte für funded_amnt und total_pymnt nicht den Betrieb vermasselt sie scheinen gut:

screenshot - query result

Selbst wenn ich gerade tun :

500/l.funded_amnt 

Ich bekomme immer noch Null. Was mache ich falsch?

+1

Ist es nicht wegen Integer-Division? Was ist, wenn Sie '500.0/l.funded_amnt' versuchen? –

+0

Ahh, ja, ich vergaß es würde auf die nächste ganze Zahl runden. Vielen Dank! – Aly

Antwort

2

Multiplizieren Sie Ihren Zähler mit 1,0.

MATCH (m:Member)-[:ACTIVITY {issue_d:"16-Jan"}]->(l:Loan) 
MATCH (m)-[:ACTIVITY]->(p:Payments) 
WHERE l.installment < 1000 AND p.total_pymnt > 0 
RETURN (l.funded_amnt - p.total_pymnt), ((l.funded_amnt - p.total_pymnt) * 1.0)/l.funded_amnt, l.funded_amnt, p.total_pymnt, m.member_id 
LIMIT 1000; 

Integer-Division verwirft den Rest, so müssen Sie Ihren Zähler um 1,0 multiplizieren oder es in toFloat() wickeln.

RETURN 5/12;   // 0 
RETURN 5 * 1.0/12; // 0.4166666666666667 
RETURN toFloat(5)/12; // 0.4166666666666667