在Cypher中,你可以使用WITH
子句和聚合函數(如COLLECT
、SUM
、AVG
等)進行嵌套聚合。以下是一個示例,展示了如何在查詢中進行嵌套聚合:
假設我們有一個名為Sales
的圖數據庫,其中包含以下節點和關系:
Product
節點,具有屬性id
和name
。Sale
節點,具有屬性id
、product_id
和quantity
。我們的目標是計算每種產品的總銷售額。為此,我們可以使用以下Cypher查詢:
MATCH (p:Product)-[:SOLD]->(s:Sale)
WITH p.name AS product_name, SUM(s.quantity * s.price) AS total_sales
WITH product_name, COLLECT(total_sales) AS sales_per_product
RETURN product_name, sales_per_product
在這個查詢中,我們首先使用MATCH
子句找到所有與銷售關聯的產品。然后,我們使用WITH
子句將產品名稱和每種產品的總銷售額(通過將銷售數量乘以銷售價格計算得出)聚合在一起。接下來,我們再次使用WITH
子句將產品名稱與每種產品的總銷售額列表聚合在一起。最后,我們返回產品名稱和每種產品的總銷售額列表。
這個查詢中的嵌套聚合包括兩個步驟:首先計算每種產品的總銷售額,然后將這些銷售額聚合成一個列表。這使得我們可以輕松地查看每種產品的銷售表現。