2010-10-23 46 views
3

我正在寫pl/pgsql函數做一些統計處理。使用8.2的postgres。我想使用這個方便聚合函數:pl/pgsql數組作爲輸入到一個聚合函數

REGR_SLOPE(Y,X)

但是,我有我的X和Y數據存儲爲PL/pgSQL函數局部數組: ÿ雙精度[]; x雙精度[];

麻煩的是當我使用此作爲PL/pgSQL函數的行:

斜率:= REGR_SLOPE(Y,X);

我收到一個錯誤,說該函數不可用或者有錯誤的參數。我懷疑這是因爲輸入應該從表中選擇爲列,而不是作爲雙精度數組傳遞。

有沒有辦法使regr_slope函數與本地數組? (即,某種方式將陣列投入到聚合函數的有效輸入中?)

謝謝。

回答

1
SELECT regr_slope(x,y) INTO slope FROM (SELECT unnest(ARRAY[1,2,3,4]) as x, unnest(ARRAY[5,6,7,8]) AS y) AS z; 
+1

謝謝。這對我有一個額外的工作。我需要添加最新功能: – jeff 2010-10-24 17:15:04

+0

DROP FUNCTION unnest(anyarray); CREATE OR REPLACE FUNCTION UNNEST(anyarray的) RETURNS SETOF爲anyelement AS $ BODY $ SELECT 1 $ [I] FROM generate_series(array_lower($ 1,1),array_upper(1,1 $))1; $ BODY $ 語言'sql'VOLATILE 成本100 ROWS 1000; ALTER FUNCTION unnest(anyarray)擁有者postgres; – jeff 2010-10-24 17:16:00