Redshift:无法在UDF内部使用聚合函数?

时间:2020-05-11 18:24:22

标签: amazon-redshift user-defined-functions

我写了以下代码:

create or replace function max_price() 
    returns real 
    volatile
as 
$$
    select 
        max(main_amount)
    from
        table
$$ 
language sql;

我收到此错误消息: 错误:选择表达式不能具有聚合或窗口函数。 上下文:创建SQL函数“ max_price”正文

我该如何解决?

2 个答案:

答案 0 :(得分:1)

不,Redshift UDF是标量的-输入值的每“行”都返回一个输出。

您也许可以使用存储过程来获得所需的结果。

答案 1 :(得分:1)

Amazon Redshift中的标量用户定义函数无法发出SELECT命令来从表中检索数据。它旨在作为计算数字的一种方式,而不是查询数据库。

来自Creating a scalar SQL UDF - Amazon Redshift

SELECT子句不能包含以下任何类型的子句:FROM,INTO,WHERE,GROUP BY,ORDER BY,LIMIT

如果您需要在功能中查询另一个表,请使用Stored procedure