Neo4j 查找与WHERE的平均关系数

Neo4j 查找与WHERE的平均关系数,neo4j,cypher,Neo4j,Cypher,我有一个包含纸张和作者节点的数据集。这些关系表示引用(论文到论文)和作者身份(作者到论文) 对于所有作者,我想计算他们写的论文数量和他们收到的引文数量,以便计算每篇论文的平均引文数量 但是,论文节点有一个我想过滤的年份属性,以便查找给定年份中作者每篇论文的平均引用次数 也就是说,对于作者来说,找到某个日期之前写的论文,找到引用这些论文的论文数量,然后返回前者除以后者的平均值 到目前为止,我掌握的代码是: MATCH(a:Author)-[:AUTHORED]->(q:Paper)WHERE q.

我有一个包含纸张和作者节点的数据集。这些关系表示引用(论文到论文)和作者身份(作者到论文)

对于所有作者,我想计算他们写的论文数量和他们收到的引文数量,以便计算每篇论文的平均引文数量

但是,论文节点有一个我想过滤的年份属性,以便查找给定年份中作者每篇论文的平均引用次数

也就是说,对于作者来说,找到某个日期之前写的论文,找到引用这些论文的论文数量,然后返回前者除以后者的平均值

到目前为止,我掌握的代码是:

MATCH(a:Author)-[:AUTHORED]->(q:Paper)WHERE q.year(q)WHERE p.year(q))
这似乎可以得到一般的引用次数,但当我这样做时
size((p:Quanta)-[:CITES]->(q)其中p.year主要问题是以下
WITH
子句没有指定
q
,因此
q
不受该子句后面任何内容的约束:

WITH a, count(q) as papers_written
假设
Author
节点具有唯一的
name
值,则此查询应执行您期望的操作:

MATCH (a:Author)-[:AUTHORED]->(q:Paper)
WHERE q.year <= 2008
OPTIONAL MATCH (q)<-[:CITES]-(p:Paper)
WHERE p.year <= 2008
RETURN a.name, COUNT(DISTINCT p) AS citations, COUNT(DISTINCT q) AS papers_written
匹配(a:作者)-[:作者]->(q:论文)

其中q.year是有意义的,除了我注意到
COUNT(DISTINCT q)
不计算引用次数为0的论文。你知道我如何解释这一点吗?