Попробуйте использовать агрегатную функцию lag
, чтобы показать вам как вес из предыдущей записи, так и дату из предыдущей записи.Затем вы можете сложить эти два значения (прибыль от предыдущей записи, количество дней от предыдущей записи), чтобы получить среднее значение:
with gains as (
select
ganado_id, weight, created,
weight - lag (weight) over (partition by ganado_id order by created) as gain,
created - lag (created) over (partition by ganado_id order by created) as days
from table1
)
select
ganado_id, sum (gain) * 1.0 / sum (days) as avg_gain
from gains
group by
ganado_id
- РЕДАКТИРОВАТЬ -
В соответствии с вашими отзывами это будетбыть средним из средних значений:
with gains as (
select
ganado_id, weight, created,
1.0 * (weight - lag (weight) over (partition by ganado_id order by created)) /
(created - lag (created) over (partition by ganado_id order by created)) as gain_per_day
from table
)
select
ganado_id, avg (gain_per_day)
from gains
group by
ganado_id
Результаты:
1 0.61805555555555555556
2 0.65277777777777777778