В этом конкретном случае вы можете использовать следующее
window_sum(sum(variable), -30, 0) / window_sum(sum(1), -30, 0)
Несколько идей о табличных вызовах, которые нужно иметь в виду
- Табличные вызовы работают с совокупными результатами запросов.
- Это дает вам гибкость - вы можете разделить таблицу результатов запроса различными способами, получить доступ к нескольким значениям в наборе результатов, упорядочить результаты запроса, чтобы повлиять на ваши расчеты, по-разному вложить таблицы в вычисления.
- Этот подход также может дать вам эффективность, если вы сможете рассчитать то, что вам нужно, просто из совокупных результатов, которые вы уже получили.
- Это также дает вам сложность. Вы должны знать, как каждый расчет определяет адресацию и разбиение результатов запроса. Вы также должны подумать о том, как двойная агрегация повлияет на ваши результаты.
- В большинстве случаев применение функций агрегирования спина к спине требует тщательного обдумывания того, что будут означать результаты. Как вы заметили, средние значения могут не означать то, что люди думают, что они имеют в виду. Другие могут быть вполне разумными, например, средние значения ежедневных продаж.
- В некоторых случаях двойная агрегация может использоваться без лишних раздумий, поскольку результаты одинаковы независимо. Суммы сумм, мин мин, макс макса дают тот же результат, что и вызов суммы, мин или макс для базовых строк данных. Эти функции называются аддитивными функциями агрегирования и подчиняются ассоциативному правилу, которое вы выучили в начальной школе. Следовательно, формула в начале этого ответа.
Вы также можете прочитать о функции Total ().