Two level aggregation

Hi,

I was thinking below two queries will have identical results but this is not the case, they differ significantly. Can someone please explain why?

from(bucket: "my-bucket")
  |> range(start: v.timeRangeStart, stop: v.timeRangeStop)
  |> filter(fn: (r) => r["_measurement"] == "some-measurement")
  |> filter(fn: (r) => r["_field"] == "my-field" )
  |> aggregateWindow(every: 5s, fn: mean, createEmpty: false)
from(bucket: "my-bucket")
  |> range(start: v.timeRangeStart, stop: v.timeRangeStop)
  |> filter(fn: (r) => r["_measurement"] == "some-measurement")
  |> filter(fn: (r) => r["_field"] == "my-field" )
  |> aggregateWindow(every: 1s, fn: mean, createEmpty: false)  
  |> aggregateWindow(every: 5s, fn: mean, createEmpty: false)

Edit: Rethinking, this can be caused by the number of points in the windows.
i.e. mean(4,10,10) = 8 is different than mean(mean(4), mean(10,10)) = 7.
But the results are different even for min, max aggregate functions.