У меня есть 4 измерения, одно из которых - дата. Мне нужно рассчитать для каждой даты среднее значение за последние 30 дней для каждого значения измерения.
Я попытался усреднить раздел по 4 измерениям в виде:
SELECT
Date, Produce,Company, Song, Revenues,
Average(case when Date between Date -Interval '31' day and Date - Interval '1' Day then Revenues else null End) over (partition by Date,Company,Song,Revenues order by Date) as "Running Average"
From
Base_Table
Я получаю только нули при каждой попытке агрегации. Помощь приветствуется. Спасибо
Вы можете попробовать ниже -
SELECT
Date, Produce,Company, Song, Revenues,
Average(Revenues) over (partition by Company,Song rows between 30 preceding and current row) as "Running Average"
From
Base_Table
Идеально. Большое спасибо!
@ fa06 Откуда вы знаете, что результат относится к последним x дням, если нет предложения order by?
Я думаю, вам нужно включить ORDER BY <DATE COLUMN> DESC
... и удалить
date
изpartition by