聚合表达式¶
聚合表达式包含一个聚合函数实例,并返回聚合函数的执行结果。
聚合表达式可以与 GROUP BY 子句在 RETURN 语句中搭配使用,按一个或多个列对结果集进行分组。更多信息,请参见 RETURN 语句。
语法¶
- aggregate_value_expression
aggregate_value_expression ::=
aggregate_function '(' ( 'DISTINCT' | 'ALL' )? value_expression ( ',' value_expression )* ')'
参数¶
aggregate_function¶
聚合函数的名称。有关聚合函数的更多信息,请参见聚合函数。
DISTINCT | ALL¶
DISTINCT和ALL是用于控制查询结果中是否包含重复值的关键字。
- 如果指定
DISTINCT,聚合函数会忽略指定组中的重复值。 - 如果指定
ALL,聚合函数会包含指定组中的所有值,包括重复值。 - 如果未指定
DISTINCT或ALL,默认值为ALL。
value_expression¶
聚合函数入参的值表达式,该值可以是任何值类型。有关更多信息,请参见表达式。
示例¶
以下示例基于示例数据集。
对单个组的值进行聚合操作¶
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 |
+-----------------+-------------+