我正在使用PostgreSQL 8.2,這是我問這個問題的主要原因。我想在這個版本的PostgreSQL中得到一個列(讓它命名爲C),並且對於其他一些預先定義的列(讓它命名爲B)的累積最小值。因此,在列C的第n行中,對於某些排序,應該是行1至n中B的最小值。早期版本的PostgreSQL的累積分鐘
在示例列A列出了秩序和C列中包含的順序爲B列累計最低:
A B C
------------
1 5 5
2 4 4
3 6 4
4 5 4
5 3 3
6 1 1
也許最簡單的方法來解釋,我想是,在以後的版本中,下一個查詢的作用:
SELECT A , B, min (B) OVER(ORDER BY A) C FROM T;
但是,版本8.2當然沒有窗口功能。
我寫了一些plpgsql函數在數組上執行此操作。但要使用這個,我必須使用array_agg集合函數,我再次寫我自己(那裏沒有內置的array_agg)。這種方法效率不高,雖然它在較小的表上運行良好,但現在幾乎無法使用,因此我需要在較大的表上使用它。
因此,我非常感謝任何有關此問題的替代方案,更有效的解決方案的建議。
謝謝!