2015-02-19 2 views
1

Я пытаюсь написать простую функцию/R PL, которая находит среднее значение столбца (Greenplum 4.3.4 DB)PL/R - Пройдите весь столбец в качестве аргумента

CREATE OR REPLACE FUNCTION mean_plr(val numeric[]) RETURNS numeric AS 
$$ 
x <- val 
avg = mean(x) 
return(avg) 
$$ 
LANGUAGE 'plr'; 

SELECT mean_plr(sensor1) FROM public.tempSensors; 

Это, однако, дает me the error:

ERROR: function mean_plr(numeric) does not exist 
LINE 1: SELECT mean_plr(sensor1) FROM public.tempSensors; 
      ^
HINT: No function matches the given name and argument types. You may need to add explicit type casts. 

ответ

1

Выяснено, что я делаю неправильно. mean_plr (sensor1) отправляет 1 значение за раз. Чтобы отправить весь столбец, нам нужно использовать функцию array_agg().

SELECT mean_plr(array_agg(sensor1::numeric)) FROM public.tempSensors; 
Смежные вопросы