跳转至
开发版采用单机部署,无需产品 License 文件。需要多机部署或大规模性能测试? 了解企业版

聚合表达式

聚合表达式包含一个聚合函数实例,并返回聚合函数的执行结果。

聚合表达式可以与 GROUP BY 子句在 RETURN 语句中搭配使用,按一个或多个列对结果集进行分组。更多信息,请参见 RETURN 语句。

语法

aggregate_value_expression
aggregate_function ( DISTINCT ALL 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         |
+-----------------+-------------+