neo4j
聚集函数
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的值会被忽略;