概述
集合函数也称聚合函数,是指对一系列值进行计算。典型的系列值是数据集多条记录的同一字段,因此聚合函数的典型参数值就是数据集字段。常用的集合函数如下:
表1 常用集合函数表
函数 | 说明 | 语法 | 示例 |
---|---|---|---|
AggregateIf | 如果布尔表达式符合给定条件,则计算指定表达式的集合函数值。 | AggregateIf(<条件表达式>, <集合函数>, <集合函数参数>) | =AggregateIf(Fields!Discontinued.Value = True, Sum, Fields!InStock.Value) |
AggregateIf(with scope) | 在指定作用域内,如果布尔表达式符合给定条件,则计算指定表达式的集合函数值。 | AggregateIf(<条件表达式>, <集合函数>, <集合函数参数>, <作用域>) | =AggregateIf(Fields!Discontinued.Value = True, Sum, Fields!InStock.Value, "Category") |
Avg | 返回指定表达式的所有非空值的平均值。如:=Avg( Fields!销售额.Value)。 | Avg(<数值表达式>) | =Avg(Fields!LifeExpentancy.Value) |
Avg(with scope) | 在指定作用域内,计算表达式中所有非空数值的平均数。 | Avg(<数值表达式>, <作用域>) | =Avg(Fields!LifeExpentancy.Value, "GroupByCountry") |
Count | 计算指定表达式中所有非空数值的总个数。 | Count(<数值表达式>) | =Count(Fields!EmployeeID.Value) |
Count(with scope) | 在指定作用域内,计算指定表达式中所有非空数值的总个数。 | Count(<数值表达式>, <作用域>) | =Count(Fields!EmployeeID.Value, "Title") |
CountDistinct | 返回指定表达式的所有不同值的计数。 | CountDistinct(<数值表达式>) | =CountDistinct(Fields!OrderID.Value) |
CountDistinct(with scope) | 在指定作用域内,计算指定表达式中所有非重复值的个数。 | CountDistinct(<数值表达式>, <作用域>) | =CountDistinct(Fields!OrderID.Value, "GroupByCategory") |
CountRows | 计算记录行数。 | CountRows() | =CountRows() |
CountRows(with scope) | 计算指定范围内的记录行数。 | CountRows(<作用域>) | =CountRows("Title") |
CumulativeTotal | 计算当前页面级别的数据统计结果,可能是合计、平均值、最大或最小值的累计。 | CumulativeTotal(<数值表达式>, <聚合函数>) | =CumulativeTotal(Fields!OrderID.Value, Count) 例如:=CumulativeTotal( Fields!Qty.Value , Sum) 返回数据集字段Qty的当前累计,其中的“Sum”可以为“AVG”以求累计平均值。此函数多用于会计类报表的滚动汇总。 |
DistinctSum | 当一个表达式的数值不重复时,计算另一表达式的总和。 | DistinctSum(<非重复数值表达式>, <待汇总数值表达式>) | =DistinctSum(Fields!OrderID.Value, Fields!OrderFreight.Value) |
DistinctSum(with scope) | 在指定作用域内,当一个表达式的数值不重复时,计算另一表达式的总和。 | DistinctSum(<非重复数值表达式>, <待汇总数值表达式>, <作用域>) | =DistinctSum(Fields!OrderID.Value, Fields!OrderFreight.Value, "Order") |
First | 返回指定表达式的第一个值。通常是数据集第一条记录的指定字段值。 | First(<数值表达式>) | =First(Fields!ProductNumber.Value) |
First(with scope) | 在指定作用域内,返回指定表达式的第一个值。 | First(<数值表达式>, <作用域>) | =First(Fields!ProductNumber.Value, "Category") |
Last | 返回指定表达式的最后一个值。 | Last(<数值表达式>) | =Last(Fields!ProductNumber.Value) |
Last(with scope) | 在指定作用域内,返回指定表达式的最后一个值。 | Last(<数值表达式>, <作用域>) | =Last(Fields!ProductNumber.Value, "Category") |
Max | 返回指定表达式的所有非空值中的最大值。 | Max(<数值表达式>) | =Max(Fields!OrderTotal.Value) |
Max(with scope) | 在指定作用域内,返回指定表达式中所有非空数值的最大值。 | Max(<数值表达式>, <作用域>) | =Max(Fields!OrderTotal.Value, "Year") |
Median | 返回指定表达式中所有数值的中位数。 | Median(<数值表达式>) | =Median(Fields!OrderTotal.Value) |
Median(with scope) | 在指定作用域内,返回指定表达式中所有数值的中位数。 | Median(<数值表达式>, <作用域>) | =Median(Fields!OrderTotal.Value, "Year") |
Min | 返回指定表达式的所有非空值中的最小值。 | Min(<数值表达式>) | =Min(Fields!OrderTotal.Value) |
Min(with scope) | 在指定作用域内,返回指定表达式中所有非空数值的最小值。 | Min(<数值表达式>, <作用域>) | =Min(Fields!OrderTotal.Value, "Year") |
Mode | 返回指定表达式中重复次数最多的数值。 | Mode(<数值表达式>) | =Mode(Fields!OrderTotal.Value) |
Mode(with scope) | 在指定作用域内,返回指定表达式中重复次数最多的数值。 | Mode(<数值表达式>, <作用域>) | =Mode(Fields!OrderTotal.Value, "Year") |
RunningValue | 返回指定表达式的累进计算值。 函数原型为:RunningValue(<Expression>, <Aggregate>, <Scope>)。 其中,<Expression>为被计算的表达式,<Aggregate>为累进计算方法,比如:SUM表示合计,AVG表示平均。例如:=RunningValue(Fields!库存量.Value, SUM) 返回从数据集首行至当前行的库存量累计。 | RunningValue(<数值表达式>, <集合函数>) | =RunningValue(Fields!Price.Value, Sum) |
RunningValue(with scope) | 在指定作用域内,返回指定表达式的累进计算值。 | RunningValue(<数值表达式>, <集合函数>, <作用域>) | =RunningValue(Fields!Price.Value, Sum, "Nwind") |
StDev | 返回指定表达式的所有非空值的标准偏差。 | StDev(<数值表达式>) | =StDev(Fields!LineTotal.Value) |
StDev(with scope) | 在指定作用域内,计算指定表达式所有非空数值的标准差。 | StDev(<数值表达式>, <作用域>) | =StDev(Fields!LineTotal.Value, "Nwind") |
StDevP | 返回指定表达式的所有非空值的总体标准偏差。 | StDevP(<数值表达式>) | =StDevP(Fields!LineTotal.Value) |
StDevP(with scope) | 在指定作用域内,计算指定表达式所有非空数值的总体标准差。 | StDevP(<数值表达式>, <作用域>) | =StDevP(Fields!LineTotal.Value, "Order") |
Sum | 返回指定表达式的值的总和。 | Sum(<数值表达式>) | =Sum(Fields!Price.Value) |
Sum(with scope) | 在指定作用域内,计算指定表达式所有数值的总和。 | Sum(<数值表达式>, <作用域>) | =Sum(Fields!Price.Value, "Category") |
Var | 返回指定表达式的所有非空值的方差(标准差的平方)。 | Var(<数值表达式>) | =Var(Fields!LineTotal.Value) |
Var(with scope) | 在指定作用域内,计算指定表达式所有非空数值的方差(标准差的平方)。 | Var(<数值表达式>, <作用域>) | =Var(Fields!LineTotal.Value, "Order") |
VarP | 返回指定表达式的所有非空值的总体方差。 | VarP(<数值表达式>) | =VarP(Fields!LineTotal.Value) |
VarP(with scope) | 在指定作用域内,计算指定表达式所有非空数值的总体方差(总体标准差的平方)。 | VarP(<数值表达式>, <作用域>) | =VarP(Fields!LineTotal.Value, "Order") |
示例
当我们为文本框绑定一个字段时,系统将自动进行集合运算。对数值类型的字段进行Sum运算,对非数值类型的字段进行Count运算。
图1 集合运算
我们也可以在编写表达式时自定义添加集合函数进行运算,以得到需要的结果。比如,用Max函数获取订单金额的最大值。
图2 自定义集合函数表达式
注意
每个集合函数都可以使用 Scope 参数来定义执行集合函数的范围,有关数据范围的详细介绍请参见函数计算范围。