(2022-01-01 00:00:00, 2022-01-01 01:00:00, 2022-01-01 02:00:00... 2022-01-01 23:00:00).
Я хочу посчитать скользящую среднюю (moving average) для 7 и 30 дней.
В интернете нашел, как считать, но там примеры по дням. У меня по часам.
Как собрать среднее для дня, если он разбит по часам (и видимо надо запихнуть это сё в новую таблицу и уже на её основе высчитывать среднее).
Я начал что-то пробовать здесь https://dbfiddle.uk/?rdbms=postgres_14&fiddle=7babd29cbd6924fb6a58914edbcf44ee, спасибо
И вот, где я нашел, как считать: https://ubiq.co/database-blog/calculate-moving-average-postgresql/#:~:text=To%20calculate%20moving%20average%20in%20PostgreSQL%2C%20we%20first%20sort%20the,row%20and%20preceding%204%20rows.
какая разница часы или дни?
Дни состоят из часов. Для дня средним будет сумма всех часов на количество
скользящая средняя это математическая функция которая я подозреваю вообще ниего не знает кроме чисел
если прочитаете определение там ничего не будет сказано про что обозначают числа
Да, но ей ведь надо дать правильные числа ) Мой первый шаг это посчитать среднюю для каждого дня. Я пока не могу понять ,как это оформить в новую таблицу. Для одного дня это будет просто, что-то вроде SELECT AVG(total) FROM table WHERE date_time = '2022-01-01' и записать результат в новую таблицу и так для каждого дня
если вам нужна средняя по часам то зачем вы будете считать обычное среднее для дня?
Мне нужно посчитать среднее для 7 и 30 дней. А дни у меня разбиты на часы.
7 и 30 дней это промежуток но не размерность (часы, Дни)
Я могу ошибаться. Изначально я решил эту задачу на js, где я просто в цикле собирал среднее для каждого дня (сумма для всех часов деленная на их количество). Получал массив средних по дням (тоже просто числа). Потом этот массив использовал для подсчета простого среднего для 30 дней. Сейчас я понял ,что на js гонять такие массивы данных затратно будет, и хочу перенести логику на сторону postgres :)
так вам нужно скольязее среднее или какое? одно число ИМХО не может быть скользящих средним
Да, неточность. Нужно скользящее по дням скользящее. А дни я собирал обычным усреднением часов
все равно фигня какая то, если вы хотите получить одно число то у вам и нужно самое обычное среднее посчитать. просто просумировать все часы и поделить на их количество
Одно число не хочу. Каждое последующее зависит от предыдущего. В итоге я получаю (в js) массив день-значение и могу, например, нарисовать линию)
тогда почему бы не посчитать по часам? формулировка задачи да в днях но в часах никто такие промежутки никогда не указывает
я собираю среднее дня из часов. И далее у меня везде данные по дням. 7 дней, 30 дней, 10 дней. Никто не просит среднее по часам
Обсуждают сегодня