Neo4j 计算Cypher聚合中符合特定条件的记录的比例
假设我有一个图形,我这样查询:Neo4j 计算Cypher聚合中符合特定条件的记录的比例,neo4j,cypher,Neo4j,Cypher,假设我有一个图形,我这样查询: MATCH (n:Class)-[:HAS]->(i:Item) RETURN n.id as Id1, i.id as IdI, i.isWhatever as Criterion 得到 IdC IdI Criterion A 1 False A 2 True B 1 True 我期望的输出是 IdC r
MATCH (n:Class)-[:HAS]->(i:Item)
RETURN n.id as Id1, i.id as IdI, i.isWhatever as Criterion
得到
IdC IdI Criterion
A 1 False
A 2 True
B 1 True
我期望的输出是
IdC ratioCriterion
A 0.5
B 1
我想这个问题可以归结为如何用密码对布尔值列表求和。除以聚合大小的部分很容易。我的意思是,完整的查询如下所示:
MATCH (n:Class)-[:HAS]->(i:Item)
WITH n.id as Id1, count_number_of_True_values / count(*) as ratioCriterion
但我只是不知道如何编写真实值的
count\u number\u
位。您搜索的是以下查询:
MATCH (n:Class)-[:HAS]->(i:Item)
WITH n.id as Id1, i.id as IdI, i.isWhatever as Criterion
WITH Id1, CASE WHEN Criterion THEN 1 ELSE 0 END AS numCrit
WITH Id1, collect(numCrit) AS crits
RETURN Id1, reduce(s = 0, x IN crits | s + x)/toFloat(size(crits))
我用做了很多,向您展示了不同的步骤
干杯非常感谢。我想为了可读性,我只需删除第二行,然后像这样编写第二行:,其中n.id为Id1,CASE为I.iswhaten,那么1,否则0以numCrit结尾。