PL/R - 将整列作为参数传递

Posted

技术标签:

【中文标题】PL/R - 将整列作为参数传递【英文标题】:PL/R - Pass entire column as an argument 【发布时间】:2015-02-19 09:21:06 【问题描述】:

我正在尝试编写一个简单的 PL/R 函数来查找列的平均值(Greenplum 4.3.4 DB)

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;

然而,这给了我错误:

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;

【讨论】:

以上是关于PL/R - 将整列作为参数传递的主要内容,如果未能解决你的问题,请参考以下文章

c# 请问数组能作为参数传递吗? 如果可以如何传递呢?

如何将列表的所有元素作为函数的参数传递而不将列表作为参数传递

java(String和StringBuffer分别作为参数传递)

传递带有参数的函数作为参数?

httpclient如何传递数组参数

如何将函数作为参数传递,带参数? [复制]