Redshift:不能在 UDF 中使用聚合函数?
Posted
技术标签:
【中文标题】Redshift:不能在 UDF 中使用聚合函数?【英文标题】:Redshift: Cannot use aggregate function inside UDF's? 【发布时间】:2020-05-11 18:24:22 【问题描述】:我写了以下代码:
create or replace function max_price()
returns real
volatile
as
$$
select
max(main_amount)
from
table
$$
language sql;
我收到此错误消息: 错误:选择表达式不能有聚合或窗口函数。 上下文:创建 SQL 函数“max_price”主体
我该如何解决这个问题?
【问题讨论】:
【参考方案1】:不,Redshift UDF 是标量 - 输入值的每一“行”返回一个输出。
https://docs.aws.amazon.com/redshift/latest/dg/udf-creating-a-scalar-sql-udf.html您可以使用存储过程来获得您正在寻找的结果。
https://docs.aws.amazon.com/redshift/latest/dg/stored-procedure-create.html【讨论】:
【参考方案2】:Amazon Redshift 中的标量用户定义函数无法发出从表中检索数据的SELECT
命令。它旨在作为一种计算数字的方法,而不是查询数据库。
来自Creating a scalar SQL UDF - Amazon Redshift:
SELECT 子句不能包含以下任何类型的子句:FROM、INTO、WHERE、GROUP BY、ORDER BY、LIMIT
如果您需要查阅另一个表格作为函数的一部分,请使用Stored procedure。
【讨论】:
以上是关于Redshift:不能在 UDF 中使用聚合函数?的主要内容,如果未能解决你的问题,请参考以下文章