Как рассчитать кумулятивное скользящее среднее в Python / SQLAlchemy / Flask

Я дам некоторый контекст, чтобы он имел смысл. Я фиксирую рейтинги клиентов для продуктов в таблице (Рейтинг) и хочу иметь возможность возвращать кумулятивное скользящее среднее оценок, основанных на времени.

Базовый пример следует за получением оценки за день:

02 FEB - Rating: 5 - Cum Avg: 5
03 FEB - Rating: 4 - Cum Avg: (5+4)/2 = 4.5
04 FEB - Rating: 1 - Cum Avg: (5+4+1)/3 = 3.3
05 FEB - Rating: 5 - Cum Avg: (5+4+1+5)/4 = 3.75
Etc...

I ' Я пытаюсь придумать подход, который не будет ужасно масштабироваться.

Моя текущая идея состоит в том, чтобы иметь функцию, которая запускается, когда строка вставляется в таблицу рейтинга, которая вычисляет среднюю накопленную сумму на основе предыдущей строки для этого продукта

Таким образом, поля будут примерно такими:

TABLE: Rating
| RatingId | DateTime | ProdId | RatingVal | RatingCnt | CumAvg |

Но это кажется довольно изворотливым способом хранения данных.

Каким (или каким-либо другим) способом это сделать? Если бы мне пришлось использовать своего рода «триггер», как бы вы это сделали в SQLAlchemy?

Любые советы приветствуются!

8
задан mal-wan 23 August 2011 в 07:47
поделиться