рассчитать среднее окно без разделения или порядок по столбцу в SQL - PullRequest
0 голосов
/ 05 февраля 2019

Если у меня есть фрейм данных только с количеством кликов за определенный фиксированный интервал времени, похожий на этот:

1
3
4
2
6
1

И я хочу вычислить их скользящее среднее с 5 строками выше, было бы это законно:

ВЫБРАТЬ AVG (значение) ПЕРЕВЕРНУТЬ (ЗАКАЗАТЬ НА 1 СТРОК ASC 4 ПРЕДВАРИТЕЛЬНО) КАК avg_value ОТ df GROUP BY 1

Или это должно быть

ВЫБРАТЬ AVG (значение) ПЕРЕВЕРНУТЬСЯ (РАЗДЕЛЕНИЕ ПО 1 СТРОКЕ ASC 4 ПРЕДВАРИТЕЛЬНО) КАК avg_value ИЗ ГРУППЫ df ПО 1

1 Ответ

0 голосов
/ 05 февраля 2019

Похоже, вы хотите:

SELECT df.*,
       AVG(value) OVER (ORDER BY datetimecol ASC
                        ROWS 4 PRECEDING
                       ) AS avg_rolling_5
FROM df;

Примечания:

  • Скользящее среднее требует упорядочения данных.datetimecol для столбца, представляющего это упорядочение.
  • Скользящее среднее значение для исходных данных , а не для агрегированных данных, поэтому order by не требуется.
  • Базы данных SQL имеют таблиц , а не фреймов данных .
...