В общем, этот подход работает, когда вы хотите, чтобы каждый из столбцов результата в массиве:
MATCH (p:Person)
RETURN COLLECT(id(p)) AS ids,
COLLECT(p.name) AS names
для вашего запроса, это выглядело бы как
MATCH(c:Company{companyId:4})<-[re:WORKS_IN]-(p:Person)-[r:HAS_SCORE]->(ps:PerformanceScores)
WITH distinct ps.scoreDate as scoredate
MATCH (ps:PerformanceScores {scoreDate:scoredate})
WITH ps.score as score, scoredate
UNWIND scoredate as x
WITH x,score,scoredate
WITH { average:avg(score),
fulldate: x,
months:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"][scoredate.month-1],
year:scoredate.year
} as row order by row.fulldate
RETURN COLLECT (average) as averages,
... etc