gpt4 book ai didi

Presto - 获取数组元素的总和

转载 作者:行者123 更新时间:2023-12-05 01:36:22 32 4
gpt4 key购买 nike

我正在使用 Athena 并尝试获取 double 组元素的总和,但 reduce 函数似乎只适用于整数:

SELECT reduce(ARRAY [5.0, 20.0, 50.4], 0, (s, x) -> s + x, s -> s);

会抛出错误:

函数 reduce 的意外参数(数组( double )、整数、com.facebook.presto.sql.analyzer.TypeSignatureProvider@762f0fa7、com.facebook.presto.sql.analyzer.TypeSignatureProvider@29dfe267)。预期:reduce(array(T), S, function(S,T,S), function(S,R)) T, S, R

有办法吗?

最佳答案

这是 Presto 中的已知错误。您可以追踪https://github.com/prestosql/presto/issues/2760 .

作为解决方法,您可以将 array(decimal(..)) 转换为 array(decimal(38,..))array (双):

presto> SELECT reduce(cast(ARRAY[5.0, 20.0, 50.4] as array(decimal(38,5))), 0, (s, x) -> s + x, s -> s);
_col0
----------
75.40000

presto> SELECT reduce(cast(ARRAY[5.0, 20.0, 50.4] as array(double)), 0, (s, x) -> s + x, s -> s);
_col0
-------
75.4

Athena 基于较旧的 Presto 版本(当前为 .172,已有 3 年历史),显然以上都不适用于 Athena(基于您的数组已经是 array(double) ).

关于Presto - 获取数组元素的总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62149290/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com