Files
dots/JetBrains/WebStorm2025.1/extensions/com.intellij.database/data/aggregators/AVG.groovy
Leandro Afonso f0cdef9259 init
2025-09-27 18:39:59 +01:00

38 lines
974 B
Groovy

/*
* Available context bindings:
* COLUMNS List<DataColumn>
* ROWS Iterable<DataRow>
* OUT { append() }
* FORMATTER { format(row, col); formatValue(Object, col); getTypeName(Object, col); isStringLiteral(Object, col); }
* TRANSPOSED Boolean
* plus ALL_COLUMNS, TABLE, DIALECT
*
* where:
* DataRow { rowNumber(); first(); last(); data(): List<Object>; value(column): Object }
* DataColumn { columnNumber(), name() }
*/
import static java.math.MathContext.DECIMAL128
BigDecimal RES = 0
int i = 0
ROWS.each { row ->
COLUMNS.each { column ->
def value = row.value(column)
if (value instanceof Number) {
RES = RES.add(value, DECIMAL128)
i++
}
else if (value.toString().isBigDecimal()) {
RES = RES.add(value.toString().toBigDecimal(), DECIMAL128)
i++
}
}
}
if (i > 0) {
RES = RES.divide(i, DECIMAL128)
OUT.append(RES.toString())
}
else {
OUT.append("Not enough values")
}