在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將結果合并在一起。同時,我們還處理了其他城市的情況。