# How to calculate the average of many measurements and get only one value as result?

Hi,

I have a series of temp measurements and would like get 1 average value from a time period like a week. I tried to create a query but don’t manage to get only 1 value as a result.

Could you help me?

Hi @stony

Can you post your query here?

1 Like

Hi grant,

I’ve no clue, but this query is giving me all recorded values as a result:

``````from(bucket: "iobroker")
|> range(start: v.timeRangeStart, stop: v.timeRangeStop)
|> filter(fn: (r) => r["_measurement"] == "hm-rpc.1.BME280THP1.1.TEMPERATURE")
|> filter(fn: (r) => r["_field"] == "value")
|> aggregateWindow(every: v.windowPeriod, fn: median, createEmpty: false)
|> yield(name: "median")
|> group(columns: ["host", "_measurement"], mode:"by")
``````

I’ve read the docs but I am very new to the Flux query language. I think maybe the function reduce can do the trick. But I need help how to use this function and reduce the given results to 1 average value.

Maybe try this?

``````from(bucket: "iobroker")
|> range(start: v.timeRangeStart, stop: v.timeRangeStop)
|> filter(fn: (r) => r["_measurement"] == "hm-rpc.1.BME280THP1.1.TEMPERATURE")
|> filter(fn: (r) => r["_field"] == "value")
|> group(columns: ["host", "_measurement"], mode:"by")
|> mean()
|> yield(name: "single_avg")
``````

Wow so simple, that did the trick. I never figured this out by myself, thank you!

@stony

Awesome! I am still learning myself, so glad I could help you out.

1 Like