Math neo4j cypher中的数学最大/最小值
下面是我用cypher编写的一个工作查询,使用Math neo4j cypher中的数学最大/最小值,math,neo4j,cypher,Math,Neo4j,Cypher,下面是我用cypher编写的一个工作查询,使用CASE表达式和符号数学函数来解决明显缺乏数学min方法的问题 MATCH (a)-[ar:REL]->(b)<-[br:REL]-(c) RETURN CASE sign(ar.integer-br.integer) WHEN 1 THEN sum(br.integer) ELSE sum(ar.integer) END AS integer ORDER BY integer DESC 匹配(a)-[ar:REL]->(b)此查询可能
CASE
表达式和符号
数学函数来解决明显缺乏数学min
方法的问题
MATCH (a)-[ar:REL]->(b)<-[br:REL]-(c)
RETURN CASE sign(ar.integer-br.integer) WHEN 1 THEN sum(br.integer) ELSE sum(ar.integer) END AS integer
ORDER BY integer DESC
匹配(a)-[ar:REL]->(b)此查询可能适合您
MATCH (a)-[ar:REL]->(b)<-[br:REL]-(c)
WHERE ID(a) > ID(b)
RETURN b, SUM(
CASE
WHEN ar.integer > br.integer THEN br.integer
ELSE ar.integer END) AS integer
ORDER BY integer DESC
匹配(a)-[ar:REL]->(b)ID(b)
返回b,求和(
案例
当ar.integer>br.integer时,则br.integer
ELSE ar.integer END)作为整数
按整数描述排序
WHERE
子句用于防止重复匹配(否则您的总和将是其正确值的两倍)。它还计算每个b
(分组键)的总和,然后按降序对结果进行排序。(如果没有使用分组键进行聚合,则只有一个和,因此排序没有任何意义。)谢谢。我有一个分组键,还有一些我忘记粘贴的WHERE
选项。很抱歉无论如何,将CASE
放在sum()中放在RETURN
子句中,正如您所说的那样,这样做既干净又正确。非常感谢你!