在neo4j我正在查询
MATCH (n)-[t:x{x:"1a"}]->()
WHERE n.a > 1 OR n.b > 1 AND toFloat(n.a) / (n.a+n.b) * 100 < 90
RETURN DISTINCT n, toFloat(n.a) / (n.a + n.b) * 100
ORDER BY toFloat(n.a) / (n.a + n.b) * 100 DESC
LIMIT 10
但我收到/ by zero
错误。
因为我声明n.a或n.b中的一个应该是1,如果它们都为零,它应该跳过该行,我不应该得到这个错误。这看起来像是Neo4j中的逻辑问题。从WHERE子句中删除AND toFloat(n.a)/(n.a+n.b)*100 < 90
时没有问题。但我希望结果只低于90.我怎么能克服这个?
答案 0 :(得分:2)
n.a
或n.b
可以是否定的?我能够通过以下方式重现:
WITH -2 AS na, 2 AS nb
WHERE (na > 1 OR nb > 1) AND toFloat(na)/(na+nb)*100 < 90
RETURN na, nb
我得到:/ by zero
也许尝试将您的WHERE
子句更改为:
WITH -2 AS na, 2 AS nb
WHERE (na + nb > 0) AND toFloat(na)/(na+nb)*100 < 90
RETURN na, nb
我得到:零行。