total ( [ distinct ] 表达式 [ auto ] )
total ( [ distinct ] 表达式 for [ all|any ] 表达式 { , 表达式 } )
total ( [ distinct ] 表达式 for report )
返回选定数据项的合计值。Distinct 是与产品的较早版本兼容的替换表达式。
例如,下面的列表中,“整体 – 总计”中的汇总用的是cognos自身带有的总计功能,“表达式计算的汇总”是通过汇总函数total计算而来的。
对QUANTITY进行汇总计算的表达式如下:
total([QUANTITY] for report)
报表运行结果中,采用两种方法的汇总值是一样的:
1.2. Cognos中的平均函数average ( [ distinct ] 表达式 [ auto ] )
average ( [ distinct ] 表达式 for [ all|any ] 表达式 { , 表达式 } )
average ( [ distinct ] 表达式 for report )
返回选定数据项的平均值。
例如,下面的列表中,“整体 – 平均值”中的平均值用的是cognos自身带有的计算均值的功能,“表达式计算的平均值”是通过最大值函数average计算而来的。
因为cognos自身的汇聚功能,所以计算平均值之前首先要对数据进行汇总才能使用平均值函数,如下对QUANTITY的平均值计算表达式为:
average(total([QUANTITY]) for report)
报表运行结果中,采用两种方法的平均值是一样的:
1.3. Cognos中的最大值函数maximum ( [ distinct ] 表达式 [ auto ] )
maximum ( [ distinct ] 表达式 for [ all|any ] 表达式 { , 表达式 } )
maximum ( [ distinct ] 表达式 for report )
返回选定数据项的最大值。
例如,下面的列表中,“整体 – 最大值”中的最大值用的是cognos自身带有的计算最大值的功能,“表达式计算的最大值”是通过最大值函数maximum计算而来的。
因为cognos自身的汇聚功能,所以计算最大值之前首先要对数据进行汇总才能使用最大值函数,如下对QUANTITY的最大值计算表达式为:
maximum(total([QUANTITY]) for report)
报表运行结果中,采用两种方法的最大值是一样的:
1.4. Cognos中的最小值函数average ( [ distinct ] 表达式 [ auto ] )
average ( [ distinct ] 表达式 for [ all|any ] 表达式 { , 表达式 } )
average ( [ distinct ] 表达式 for report )
返回选定数据项的平均值。
例如,下面的列表中,“整体 – 最小值”中的最小值用的是cognos自身带有的计算最小值的功能,“表达式计算的最小值”是通过最小值函数minimum计算而来的。
因为cognos自身的汇聚功能,所以计算最小值之前首先要对数据进行汇总才能使用最小值函数,如下对QUANTITY的最小值计算表达式为:
minimum(total([QUANTITY]) for report)
报表运行结果中,采用两种方法的最小值是一样的:
1.5. 取得前几名topCount ( 集表达式 , 索引表达式 , 数字型表达式 )
根据在“集表达式”的每个成员中算得的“数字型表达式”值对集进行排序,然后返回排名前“索引表达式”位的成员。
例如取得QUANTITY前两名的PRODUCT_LINE的数据:
则数据项PRODUCT_LINE的表达式如下:
topCount([销售].[产品].[PRODUCT_LINE_EN],2,[销售].[销售].[QUANTITY])
查询的结果中只有QUANTITY排名前两名的数据:
取得前几名也可以使用rank()函数,该函数是对某个数据项进行排序,只要在过滤中使用rank([数据项])<要取的前几名+1即可。
1.6. 取得后几名bottomCount ( 集表达式, 索引表达式 , 数字型表达式 )
根据在“集合表达式”的每个成员中算得的“数字型表式”值对集合进行排序,然后返回排名最末“索引表达式”位的成员。
例如取得QUANTITY后两名的PRODUCT_LINE的数据:
则数据项PRODUCT_LINE的表达式如下:
bottomCount([销售].[产品].[PRODUCT_LINE_EN],2,[销售].[销售].[QUANTITY])
查询的结果中只有QUANTITY排名后两名的数据:
1.7. 列表、交叉表的百分率合计在制作报表合计时,计算百分率常常会遇到问题:A/B的合计应该是30/200=15%,而报表经常会自动将前面两个百分比相加10%+20%=30%,如下:
1.7.1. 列表的处理方法选中百分率汇总单元格,将聚合函数和累计聚合函数设置为自动即可。
1.7.2. 交叉表的处理方法交叉表同列表的处理方法不同,需要在表达式中使用aggregate函数,需要将合计的表达式改写成aggregate(currentMeasure within detail[数据项])即可。