Tôi đang cố gắng để thực hiện một đường trung bình di chuyển theo cấp số nhân (EMA) trên postgres, nhưng khi tôi kiểm tra tài liệu và suy nghĩ về nó, tôi càng cố gắng bối rối hơn.Làm cách nào để tính toán mức trung bình di động theo số mũ trên postgres?
Công thức EMA(x)
là:
EMA(x1) = x1 EMA(xn) = α * xn + (1 - α) * EMA(xn-1)
Nó có vẻ là hoàn hảo cho một aggregator, giữ kết quả của các yếu tố tính toán cuối cùng là chính xác những gì đã được thực hiện ở đây. Tuy nhiên một aggregator tạo ra một kết quả duy nhất (như giảm, hoặc gấp) và ở đây chúng ta cần một danh sách (một cột) kết quả (như bản đồ). Tôi đã kiểm tra các thủ tục và chức năng hoạt động như thế nào, nhưng AFAIK chúng tạo ra một đầu ra đơn lẻ, chứ không phải một cột. Tôi đã nhìn thấy rất nhiều thủ tục và chức năng, nhưng tôi không thể thực sự tìm ra cách điều này tương tác với đại số quan hệ, đặc biệt là khi làm một cái gì đó như thế này, một EMA.
Tôi không có may mắn tìm kiếm Internets từ trước tới nay. Nhưng định nghĩa cho một EMA khá đơn giản, tôi hy vọng có thể dịch định nghĩa này thành một cái gì đó hoạt động trong postgres và đơn giản và hiệu quả, vì việc chuyển sang NoSQL sẽ là quá nhiều trong bối cảnh của tôi.
Cảm ơn bạn.
PD: ở đây bạn có thể thấy một ví dụ:
https://docs.google.com/spreadsheet/ccc?key=0AvfclSzBscS6dDJCNWlrT3NYdDJxbkh3cGJ2S2V0cVE
Đăng một nguồn bảng mẫu một kết quả mong đợi. Điều này có thể giúp. – danihp