Neo4j Cypher查找具有其他公共属性的节点属性的平均值

Neo4j Cypher查找具有其他公共属性的节点属性的平均值,neo4j,cypher,Neo4j,Cypher,我有一个属性为“value”和“geneName”的“Gene”标签/节点类型 我有一个单独的标签/节点类型,称为“带属性的路径” 我想遍历所有不同的geneName,并找到该基因名称下所有基因值的平均值。我需要所有这些基因显示为不同的行。请记住,我有很多geneName,所以我不能在查询中全部命名。我需要在某个路径中执行此操作 MATCH (sample)-[:Measures]->(gene)-[:Part_Of]->(pathway) WHERE pathway.pathway

我有一个属性为“value”和“geneName”的“Gene”标签/节点类型 我有一个单独的标签/节点类型,称为“带属性的路径”

我想遍历所有不同的geneName,并找到该基因名称下所有基因值的平均值。我需要所有这些基因显示为不同的行。请记住,我有很多geneName,所以我不能在查询中全部命名。我需要在某个路径中执行此操作

MATCH (sample)-[:Measures]->(gene)-[:Part_Of]->(pathway)
WHERE pathway.pathwayName = 'Pyrimidine metabolism'
WITH sample, gene, Collect (distinct gene.geneName) AS temp
我一整天都在试图弄明白这一点,我能做的就是检索所有的基因名行。我迷路了

RETURN extract(n IN temp | RETURN avg(gene.value))  

Mabye?

此查询应返回每个不同基因名称的平均基因值:

MATCH (sample)-[:Measures]->(gene)-[:Part_Of]->(pathway:Pathway)
WHERE pathway.pathwayName = 'Pyrimidine metabolism'
RETURN sample, gene.geneName AS name, AVG(gene.value) AS avg;
当您使用聚合函数(如
AVG
)时,它会自动使用
RETURN
子句(即上述查询中的
sample
gene.geneName
中的非聚合值)中的不同值


对于效率,我也将标签添加到<代码>路径节点,这样NeN4J可以通过只扫描路径节点而不是所有节点开始。此外,您应该考虑<代码>:路径(路径名)。

,以便尽可能快地搜索路径。

感谢您的解释和回答!但是,当我运行代码时,它给了我一个错误:AVG(gene.value)只能处理数值,或者null。gene.value都是数值(精确地说是小数)。也许它们实际上是数字字符串?为了提高效率,应该将它们存储为数字而不是字符串。但是,如果无法更改存储的值,可以使用
AVG(TOFLOAT(genie.value))