在Cypher中,您可以使用聚合函數(shù)COLLECT()
結(jié)合WITH
子句和WHERE
子句來實現(xiàn)條件聚合
假設(shè)您有一個名為Person
的節(jié)點,其中包含屬性age
和city
,您想要根據(jù)城市對年齡進行條件聚合。您可以使用以下查詢:
MATCH (p:Person)
WITH p.city AS city, COLLECT(p.age) AS ages
WHERE city = 'New York'
RETURN city, ages
在這個查詢中,我們首先使用MATCH
子句找到所有的Person
節(jié)點。然后,我們使用WITH
子句將city
屬性值和根據(jù)城市收集到的年齡列表(ages
)傳遞給下一個WITH
子句。在第二個WITH
子句中,我們使用WHERE
子句來過濾出只包含紐約市的數(shù)據(jù)。最后,我們返回城市和對應的年齡列表。
如果您想要對多個城市進行聚合,可以使用UNION
來合并結(jié)果:
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
將結(jié)果合并在一起。同時,我們還處理了其他城市的情況。