首页 > 解决方案 > 使用 Cypher 查询语言在 Neo4j 中进行平均错误

问题描述

您好,我正在尝试平均数字(喜欢评级)的“响应”节点的值。但是,当我查询以下内容时:

MATCH (p:Panelist)<-[BY_PANELIST]-(r:Response)[ON_ATTRIBUTE]->(a:Attribute)-[OF_ATTRIBUTETYPE]->(at:AttributeType)
WHERE a.name = 'Liking'
AND at.name = 'Hedonic'
RETURN avg(r)

我收到以下错误:

类型不匹配:预期 Float、Integer 或 Duration 但节点“RETURN avg(r)”

我需要对响应进行哪些更改才能使其数字化?

标签: neo4jcypheraverage

解决方案


您的查询中有许多明显的拼写错误,我将尝试在下面的查询中修复(在对您的意图做出假设之后)。

但是,关于您的主要问题:获取节点的平均值是没有意义的。您只能获得节点(或关系)属性的平均值。

例如,如果一个Response节点有一个foo要平均的属性:

MATCH (:Panelist)<-[:BY_PANELIST]-(r:Response)-[:ON_ATTRIBUTE]->(a:Attribute)-[:OF_ATTRIBUTETYPE]->(at:AttributeType)
WHERE a.name = 'Liking'
  AND at.name = 'Hedonic'
RETURN AVG(r.foo) AS avg_foo

推荐阅读