Tôi sẽ đưa ra một số ngữ cảnh để nó có ý nghĩa. Tôi đang nắm xếp Xếp hạng của Khách hàng cho Sản phẩm trong một bảng (Xếp hạng) và muốn có thể trả lại Mức trung bình di chuyển tích lũy của xếp hạng dựa trên thời gian.Cách tính trung bình di chuyển tích lũy trong Python/SQLAlchemy/Flask
Một ví dụ cơ bản sau lấy một đánh giá mỗi ngày:
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...
Tôi đang cố gắng để nghĩ ra một cách tiếp cận đó sẽ không quy mô khủng khiếp.
ý tưởng hiện tại của tôi là phải có một chức năng được vấp khi một hàng được chèn vào bảng đánh giá rằng hoạt động ra Cum Avg dựa trên hàng trước cho sản phẩm đó
Vì vậy, các lĩnh vực sẽ là một cái gì đó như:
TABLE: Rating
| RatingId | DateTime | ProdId | RatingVal | RatingCnt | CumAvg |
Nhưng điều này có vẻ là một cách khá tinh vi để lưu trữ dữ liệu.
Điều gì sẽ là (hoặc bất kỳ) cách nào để thực hiện việc này? Nếu tôi sử dụng 'kích hoạt' các loại, làm thế nào để bạn thực hiện điều đó trong SQLAlchemy?
Bất kỳ và tất cả lời khuyên đều được đánh giá cao!
Chắc chắn có thể làm điều này trong SQL - xem: http://stackoverflow.com/questions/4107479/subqueries-aggregates-and-aggravation/4107784#4107784 ... Tôi không chắc chắn làm thế nào để có được SQLAlchemy để tạo một truy vấn như vậy (và cơ sở dữ liệu của bạn có thể không hỗ trợ cú pháp cần thiết.) –
@Sean Vieria: Cảm ơn bạn đã liên kết - Tôi biết có thể trong SQL thuần túy, nhưng điều này có nghĩa là số xếp hạng tăng lên, hiệu suất tồi tệ hơn khi tính toán được thực hiện trên mỗi hàng. Tôi có thể thử thực hiện ý tưởng ban đầu của tôi về lưu trữ nó khi mỗi hàng được nhập như tôi biết rằng sẽ quy mô. Tôi chỉ không chắc liệu có cái gì cơ bản tôi đã nhìn. Cảm ơn đã giúp đỡ! – mwan