Neo4j Cypher找到了具有另一个共同属性的节点属性的平均值

时间:2016-04-08 23:44:31

标签: neo4j cypher

我有一个“Gene”标签/节点类型,其属性为“value”和“geneName” 我有一个名为Pathway的单独标签/节点类型,其属性为“

我想查看所有不同的geneName,并找到Gene名称的所有Gene值的平均值。我需要将所有Gene显示为不同的行。请记住,我有很多geneName,所以我无法在查询中将它们全部命名。我需要在某个Pathway中做到这一点。

MATCH (sample)-[:Measures]->(gene)-[:Part_Of]->(pathway)
WHERE pathway.pathwayName = 'Pyrimidine metabolism'
WITH sample, gene, Collect (distinct gene.geneName) AS temp

我一直在努力解决这一问题,而我所能做的就是检索所有的geneNames行。我迷失了。

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

Mabye?

1 个答案:

答案 0 :(得分:1)

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

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)时,它会自动为同一WITHRETURN中的非聚合值使用 distinct 值子句(即上述查询中的samplegene.geneName)。

为了提高效率,我还将标签添加到pathway节点,以便neo4j可以通过仅扫描Pathway节点而不是所有节点来启动。此外,您应该在:Pathway(pathwayName)上考虑creating an index,以便尽可能快地搜索衔接路径。