我有两个节点,客户端和构建器。我正在尝试计算客户和构建者之间的关系,我想把构建者的所有联系加起来,但是当他们有超过20个客户去找他们时,这个数字被限制在20个。例如,如果"Tim“这个构建者有30个客户去找他,那么他就会有20个客户。然后我需要将每个构建器的客户计数的总和相加,并取该总和的平均值。到目前为止,我的代码如下:
MERGE (c:Person {csv.name})
MERGE (b:Person {csv.builder})
WITH c, b
MATCH (b:Person)
WITH c, b ,SIZE(()-[:client_of]->(b)) as clientCount
WHERE clientCount > 20
SET clientCount = 20
WITH clientCount, c, b
MATCH (c)-[:client_of]->(b)
RETURN b, avg(sum(clientCount))
https://drive.google.com/file/d/1lYR3KROy7BflN40N18-0B0C9rbNFxHVe/view?usp=sharing这里是模拟数据
发布于 2019-02-08 05:40:35
这可能会做您想要做的事情(我假设这是一个要插入到定义csv
映射的Cypher之后的代码片段):
MATCH (c:Person {name: csv.name})-[:client_of]->(b:Person {name: csv.builder})
WITH c, SIZE(()-[:client_of]->(b)) as cc
WITH c, CASE WHEN cc > 20 THEN 20 ELSE cc END AS clientCount
RETURN c, AVG(clientCount) AS average;
该查询返回具有csv.name
提供的名称的Person
构建器的平均客户机数。没有为构建器提供大于20的客户端数。
https://stackoverflow.com/questions/54577494
复制相似问题