average and sum: fix for null values

This commit is contained in:
Alexander Zobnin
2017-07-03 12:36:39 +03:00
parent badc5e4cb9
commit ea67c3bc2f
4 changed files with 76 additions and 40 deletions

View File

@@ -209,24 +209,36 @@ System.register(['lodash', './utils'], function (_export, _context) {
return newSeries; return newSeries;
} }
function SUM(values) {
var sum = 0;
_.each(values, function (value) {
sum += value;
});
return sum;
}
function COUNT(values) { function COUNT(values) {
return values.length; return values.length;
} }
function SUM(values) {
var sum = null;
for (var i = 0; i < values.length; i++) {
if (values[i] !== null) {
sum += values[i];
}
}
return sum;
}
function AVERAGE(values) { function AVERAGE(values) {
var sum = 0; var values_non_null = getNonNullValues(values);
_.each(values, function (value) { if (values_non_null.length === 0) {
sum += value; return null;
}); }
return sum / values.length; return SUM(values_non_null) / values_non_null.length;
}
function getNonNullValues(values) {
var values_non_null = [];
for (var i = 0; i < values.length; i++) {
if (values[i] !== null) {
values_non_null.push(values[i]);
}
}
return values_non_null;
} }
function MIN(values) { function MIN(values) {

File diff suppressed because one or more lines are too long

View File

@@ -234,24 +234,36 @@ function rate(datapoints) {
return newSeries; return newSeries;
} }
function SUM(values) {
var sum = 0;
_lodash2.default.each(values, function (value) {
sum += value;
});
return sum;
}
function COUNT(values) { function COUNT(values) {
return values.length; return values.length;
} }
function SUM(values) {
var sum = null;
for (var i = 0; i < values.length; i++) {
if (values[i] !== null) {
sum += values[i];
}
}
return sum;
}
function AVERAGE(values) { function AVERAGE(values) {
var sum = 0; var values_non_null = getNonNullValues(values);
_lodash2.default.each(values, function (value) { if (values_non_null.length === 0) {
sum += value; return null;
}); }
return sum / values.length; return SUM(values_non_null) / values_non_null.length;
}
function getNonNullValues(values) {
var values_non_null = [];
for (var i = 0; i < values.length; i++) {
if (values[i] !== null) {
values_non_null.push(values[i]);
}
}
return values_non_null;
} }
function MIN(values) { function MIN(values) {

View File

@@ -226,24 +226,36 @@ function rate(datapoints) {
return newSeries; return newSeries;
} }
function SUM(values) {
var sum = 0;
_.each(values, function (value) {
sum += value;
});
return sum;
}
function COUNT(values) { function COUNT(values) {
return values.length; return values.length;
} }
function SUM(values) {
var sum = null;
for (let i = 0; i < values.length; i++) {
if (values[i] !== null) {
sum += values[i];
}
}
return sum;
}
function AVERAGE(values) { function AVERAGE(values) {
var sum = 0; let values_non_null = getNonNullValues(values);
_.each(values, function (value) { if (values_non_null.length === 0) {
sum += value; return null;
}); }
return sum / values.length; return SUM(values_non_null) / values_non_null.length;
}
function getNonNullValues(values) {
let values_non_null = [];
for (let i = 0; i < values.length; i++) {
if (values[i] !== null) {
values_non_null.push(values[i]);
}
}
return values_non_null;
} }
function MIN(values) { function MIN(values) {