在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
子句将产品名称与每种产品的总销售额列表聚合在一起。最后,我们返回产品名称和每种产品的总销售额列表。
这个查询中的嵌套聚合包括两个步骤:首先计算每种产品的总销售额,然后将这些销售额聚合成一个列表。这使得我们可以轻松地查看每种产品的销售表现。