我有一个“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?
答案 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
)时,它会自动为同一WITH
或RETURN
中的非聚合值使用 distinct 值子句(即上述查询中的sample
和gene.geneName
)。
为了提高效率,我还将标签添加到pathway
节点,以便neo4j可以通过仅扫描Pathway节点而不是所有节点来启动。此外,您应该在:Pathway(pathwayName)
上考虑creating an index,以便尽可能快地搜索衔接路径。