MCPcopy Create free account
hub / github.com/TanStack/db / avg

Function avg

packages/db-ivm/src/operators/groupBy.ts:188–212  ·  view source on GitHub ↗
(
  valueExtractor: (value: T) => number = (v) => v as unknown as number,
)

Source from the content-addressed store, hash-verified

186 * Creates an average aggregate function
187 */
188export function avg<T>(
189 valueExtractor: (value: T) => number = (v) => v as unknown as number,
190): AggregateFunction<T, number, { sum: number; count: number }> {
191 return {
192 preMap: (data: T) => ({
193 sum: valueExtractor(data),
194 count: 0,
195 }),
196 reduce: (values: Array<[{ sum: number; count: number }, number]>) => {
197 let totalSum = 0
198 let totalCount = 0
199 for (const [value, multiplicity] of values) {
200 totalSum += value.sum * multiplicity
201 totalCount += multiplicity
202 }
203 return {
204 sum: totalSum,
205 count: totalCount,
206 }
207 },
208 postMap: (result: { sum: number; count: number }) => {
209 return result.sum / result.count
210 },
211 }
212}
213
214type CanMinMax = number | Date | bigint | string
215

Callers 1

groupBy.test.tsFile · 0.50

Calls 1

valueExtractorFunction · 0.50

Tested by

no test coverage detected