我將給出一些上下文,這是有道理的。我在表格中收集產品的客戶評級(評級),並希望能夠根據時間返回評級的累計移動平均值。如何計算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...
我試圖想,不會可怕的縮放方法。
我現在的想法是有一個功能,當行被插入到基於先前行該產品
所以領域會像上工作了射精平均的評分表跳閘:
TABLE: Rating
| RatingId | DateTime | ProdId | RatingVal | RatingCnt | CumAvg |
但是,這似乎是一個相當狡猾的方式來存儲數據。
什麼是(或任何)方式來實現這一目標?如果我要使用各種「觸發器」,那麼你如何在SQLAlchemy中做到這一點?
任何和所有的建議表示讚賞!
這絕對有可能在SQL中執行此操作 - 請參閱:http://stackoverflow.com/questions/4107479/subqueries-aggregates-and-aggravation/4107784#4107784 ...我不確定如何獲取SQLAlchemy生成一個這樣的查詢(並且您的數據庫可能不支持必要的語法)。 –
@Sean Vieria:感謝您的鏈接 - 我知道它可能在純SQL中,但這又意味着隨着評級數量的增長,性能隨着每行的計算變得更糟。我可能會嘗試實現我原來的想法,即在輸入每行時存儲它,因爲我知道這將會縮放。我只是不確定是否有某種基本的東西可以忽略。謝謝您的幫助! – mwan