package flare.query
{
/**
* Aggregate operator for computing the average of a set of values.
*/
public class Average extends AggregateExpression
{
protected var _sum:Number;
protected var _count:Number;
/**
* Creates a new Average operator
* @param input the sub-expression of which to compute the average
*/
public function Average(input:*) {
super(input);
}
/**
* @inheritDoc
*/
public override function reset():void
{
_sum = 0;
_count = 0;
}
/**
* @inheritDoc
*/
public override function eval(o:Object=null):*
{
return _sum / _count;
}
/**
* @inheritDoc
*/
public override function aggregate(value:Object):void
{
var x:Number = Number(_expr.eval(value));
if (!isNaN(x)) {
_sum += x;
_count += 1;
}
}
} }