Source: https://dev-docs.yueshu.com.cn/v5.3.2/database-gql-reference/fe/expressions/aggregate/ Documentation version: v5.3.2 # 聚合表达式 聚合表达式包含一个聚合函数实例,并返回聚合函数的执行结果。 聚合表达式可以与 [GROUP BY 子句](https://dev-docs.yueshu.com.cn/v5.3.2/database-gql-reference/dql/clauses/group-by/)在 RETURN 语句中搭配使用,按一个或多个列对结果集进行分组。更多信息,请参见 [RETURN 语句](https://dev-docs.yueshu.com.cn/v5.3.2/database-gql-reference/dql/return/)。 ## 语法 语法图源码 aggregate_value_expression ```` aggregate_value_expression ::= aggregate_function '(' ( 'DISTINCT' | 'ALL' )? value_expression ( ',' value_expression )* ')' ```` ## 参数 ### `aggregate_function` 聚合函数的名称。有关聚合函数的更多信息,请参见[聚合函数](https://dev-docs.yueshu.com.cn/v5.3.2/database-gql-reference/fe/functions/aggregate/)。 ### `DISTINCT | ALL` `DISTINCT`和`ALL`是用于控制查询结果中是否包含重复值的关键字。 - 如果指定`DISTINCT`,聚合函数会忽略指定组中的重复值。 - 如果指定`ALL`,聚合函数会包含指定组中的所有值,包括重复值。 - 如果未指定`DISTINCT`或`ALL`,默认值为`ALL`。 ### `value_expression` 聚合函数入参的值表达式,该值可以是任何值类型。有关更多信息,请参见[表达式](https://dev-docs.yueshu.com.cn/v5.3.2/database-gql-reference/fe/)。 ## 示例 以下示例基于[示例数据集](https://dev-docs.yueshu.com.cn/v5.3.2/database-gql-reference/overview/example-dataset/)。 ### 对单个组的值进行聚合操作 ```` FOR i in LIST [1,2,3,3,4,4] RETURN count(DISTINCT i), avg(i), sum(i), collect(DISTINCT i) GROUP BY () ```` 上述语句使用`GROUP BY ()`将整个结果集分组为一个单组,并使用`count`、`avg`、`sum`和`collect`聚合函数对行组进行聚合操作。`count(DISTINCT i)`表达式返回组中不同值的数量。`avg(i)`表达式等同于`avg(ALL i)`,返回组的平均值。`sum(i)`表达式等同于`sum(ALL i)`,返回组中值的总和。`collect(DISTINCT i)`表达式返回组中不同值的列表。 返回: ```` +-------------------+--------------------+--------+---------------------+ | count(DISTINCT i) | avg(i) | sum(i) | collect(DISTINCT i) | +-------------------+--------------------+--------+---------------------+ | 4 | 2.8333333333333335 | 17 | [4,3,2,1] | +-------------------+--------------------+--------+---------------------+ ```` ### 对查询结果进行聚合操作 ```` ''' USE movie MATCH ()-[e:Watch]->(v@Movie {id: 472}) RETURN collect(e.rate), avg(e.rate) GROUP BY () ''' ```` 上述语句返回 ID 为`472`的电影的所有评分,并计算电影的平均评分。 返回: ```` +-----------------+-------------+ | collect(e.rate) | avg(e.rate) | +-----------------+-------------+ | [3.0] | 3.0 | +-----------------+-------------+ ````