如果你的數據集不是太大,你可以積累他們到一個數組,然後從一個函數返回傾斜:測試
create type typ as (x numeric, y numeric);
create aggregate array_accum(sfunc = array_append,
basetype = anyelement,
stype = anyarray,
initcond = '{}');
create or replace function unnest(anyarray) returns setof anyelement
language sql immutable strict as $$
select $1[i] from generate_series(array_lower($1,1), array_upper($1,1)) i;$$;
create function get_incline(typ[]) returns numeric
language sql immutable strict as $$
select avg(abs(x-(select avg(x) from unnest($1)))/y) from unnest($1);$$;
select get_incline((select array_accum((x,y)::typ) from subquery));
樣的看法:
create view subquery as
select generate_series(1,5) as x, generate_series(1,6) as y;
我想這個問題是......如果你真的,真的需要這種行爲...是否有一個原因,你不能得到推動升級? – xenoterracide 2010-08-25 12:54:23
當depesz做他的'等待'系列時,他有時會顯示以前的做法......你可能想看看他在等待窗口函數或類似的東西。 – xenoterracide 2010-08-25 12:56:31
那會是這樣一個:http://www.depesz.com/index.php/2009/01/21/waiting-for-84-window-functions/ - 感謝那個指針。 – relet 2010-08-25 13:18:44