CrystalReport study
程序员真的很悲哀,遇到问题都不知道如何表达清楚.
最近很长一段时间了,研究学习使用CrystalReport,当然是推模式.遇到这样一个问题:
需要对一个字段取平均值,算法类似:(price1*num1+price2*num2+...)/totalnum,并且不能包括值为0的项.显然Average(fld)不能满足,尝试过if()...then...或DistinctCount(fld)去解决但没有成功.
上百度上谷歌,解决方案甚少!无赖自己探索!
解决方法如下:
WeightedAverage (fld, fld)
使您能够计算指定字段的加权平均值。在计算加权平均值时,实际上是计算一个字段的平均值,然后使用另一个字段的值来对第一个字段中的每个值在平均值中的作用进行“加权”。在一般的平均值中,所有权数都等于 1。
下列示例适用于 Basic 语法和 Crystal 语法:WeightedAverage({table.FIELD1}, {table.FIELD2})
返回 3.5,其中两个字段中每个字段都有四个值。Field1 具有值 3、2、5 和 1。Field2 具有值 0、1、1 和 0。WeightedAverage 计算如下:(3*0 + 2*1 + 5*1 + 1*0)/sum{table.FIELD2}
) = 3.5。
有冒听懂?