在Cypher中,您可以使用聚合函数COLLECT()
结合WITH
子句和WHERE
子句来实现条件聚合
假设您有一个名为Person
的节点,其中包含属性age
和city
,您想要根据城市对年龄进行条件聚合。您可以使用以下查询:
MATCH (p:Person) WITH p.city AS city, COLLECT(p.age) AS ages WHERE city = 'New York' RETURN city, ages
在这个查询中,我们首先使用MATCH
子句找到所有的Person
节点。然后,我们使用WITH
子句将city
属性值和根据城市收集到的年龄列表(ages
)传递给下一个WITH
子句。在第二个WITH
子句中,我们使用WHERE
子句来过滤出只包含纽约市的数据。最后,我们返回城市和对应的年龄列表。
如果您想要对多个城市进行聚合,可以使用UNION
来合并结果:
MATCH (p:Person) WITH p.city AS city, COLLECT(p.age) AS ages WHERE city IN ['New York', 'Los Angeles', 'Chicago'] WITH city, ages RETURN city, ages UNION MATCH (p:Person) WITH p.city AS city, COLLECT(p.age) AS ages WHERE city = 'Other' RETURN city, ages
在这个查询中,我们分别针对纽约市、洛杉矶和芝加哥的城市进行了聚合,然后使用UNION
将结果合并在一起。同时,我们还处理了其他城市的情况。