聚集函数

Aggregating functions

对聚集函数结果的排序应在RETURN 子句中使用ORDER BY子句

在RETURN子句中,非聚集函数项作为聚集函数的分类键(grouping keys),决定聚集函数的返回内容及顺序

avg()

avg(expression)

返回值:与expression表达的数字相同

  • avg(null)会返回null;
  • expression不为数字类型,则会返回一个错误;
  • avg()的参数可以是时间段;

collect()

collect(expression)

返回值:List

将expression表达的所有值聚合成一个List并返回

  • 返回的List中的元素并不一定都是同一类型的数据;
  • expression中的null值会被忽略,不加入至List;
  • collcet(null)会返回一个空List;

count()

返回值:Integer

返回expression表达的内容的元素个数,或在RETURN子句中表达分类(由分类键决定)下的结果行数

  • 在一般情况下语法为count(expression)expression中的null值会被忽略,不会被计入;count(null)会返回null;在参数前加DISTINCET关键字count(DISTINCT expression)则会忽略重复的内容
  • 在RETURN子句中对返回结果计数语法为count(*) 若一行该字段返回的值为null,该行也被计入;例CSSMATCH (n {name: 'A'})-[r]->() RETURN type(r), count(*)查询结果type(t)count(*)"KNOWS"3"READS"1此处可以看出,聚集函数的分类按照非聚集函数的部分作为分类键形成

max()

max(expression)

返回值:一个值或一个List

返回expression给定的数据中最大的

  • expression应是一个结果集;
  • null值会被忽略,不进行比较;
  • 在比较中
  • List的比较
  • max(null)会返回null;

min()

min(expression)

返回值:一个值或List

返回给定的expression中最小的

  • expression应是一个结果集;
  • null值会被忽略,不进行比较;
  • 在比较中
  • List的比较
  • min(null)会返回null;

percentileCont()

percentileCont(expression, percentile)

返回值:Float

对expression表达的值,按照percentile的比例找出对应的结果

  • expression应该是数字表达式;
  • percentile的值介于0.0与1.0之间;
  • percentileCont(null, percentile)会返回null;
  • expression中的值按照顺序获得其对应的占比,如数据集133344其中每个数的占比依次为,33.3%、66.7%、100%
  • 对于expression的数据集中没有对应比例数字的情况,使用插值法在最近的两个数字间找出结果,如对上面的数据集进行如下查询PythonUNWIND[13,33,44] as n RETURN percentileCont(n, 0.4)得到结果29.0,该数值是在13与33之间按照比例通过插值法得到的

percentileDisc()

percentileDisc(expression, percentile)

返回值:Integer或Float

  • expression应该是数字表达式;
  • percentile的值介于0.0与1.0之间;
  • percentileDisc(null, percentile)会返回null;
  • 对于expression的数据集中没有对应比例数字的情况,使用取整法在最近的数字中找出结果,如对上一个数据集进行如下查询PythonUNWIND[13,33,44] as n RETURN percentileDisc(n,0.5)得到结果33,该数值是通过取整法在距离比例0.5最近的位置找到的数

stDev()

stDev(expression)

返回值:Float

计算数据集的标准差

  • 对样本总体的一个样本或一个无偏估计计算标准差
  • 计算时,分母为N-1;
  • stDev(null) 会返回0;
  • 为null的值会被忽略;
  • expression应为数字;

stDevP()

stDevP(expression)

返回值:Float

计算数据集的标准差

  • 对样本总体计算标准差;
  • 计算时,分母为N;
  • stDev(null)会返回0;
  • 为null的值会被忽略;
  • expression应为数字;

sum()

sum(expression)

求和

返回值:Integer/Float/Duration

  • sum(null) 会返回0;
  • 为null的值会被忽略;