Obtenga valores de columna de varias filas como matriz

Estoy tratando de get valores de columna como una matriz para usarlos en la function array_agg_transfn() para calcular el valor mediano como se define en la Wiki de Postgres.

Los valores de columna de una columna particular que obtengo de acuerdo con la fila actual. Por ejemplo, 13 filas debajo de la fila actual. Intenté usar la siguiente consulta:

 select a."Week_value", array_agg(a."Week_value") over(order by prod_name,week_date desc rows between 0 preceding and 12 following) from vin_temp_table 

Pero recibí este post de error:

 array_agg_transfn called in non-aggregate context 

¿Es posible build una matriz a partir de los valores de columna en las próximas n filas?

Esto funciona bien con Postgres 9.3:

 SELECT week_value , array_agg(week_value) OVER(ORDER BY prod_name, week_date DESC ROWS BETWEEN 0 PRECEDING AND 12 FOLLOWING) FROM tbl 

-> SQLfiddle para 9.3

Pero no en la versión 8.4:

-> SQLfiddle para 8.4

La syntax ROWS BETWEEN frame_start AND frame_end se introdujo con Postgres 9.0 y no está disponible en 8.4. Compare el manual actual con su contraparte 8.4 .

Postgres 8.4 ya es bastante viejo y llega a EOL este verano . Considere actualizarse a la versión actual.

Si array_agg no funciona en su versión, intente este enfoque

 WITH Q AS( SELECT week, row_number() over (order by week) rn FROM test ) SELECT week, ( SELECT array_agg(q2.week) FROM q q2 WHERE q2.rn BETWEEN q1.rn AND q1.rn + 12 ) FROM q q1; 

demostración en funcionamiento (en 8.4.17) -> http://sqlfiddle.com/#!11/7eda9/1
pero puede ser lento.