如何在 Presto SQL 中应用 sum() 查询并面对函数 sum 的意外参数 (varchar)

How to apply sum() query in Presto SQL and facing unexpected parameters (varchar) for function sum

我正在尝试 运行 快速 SQL 中的求和查询,但我遇到了以下错误消息。 关于ae.amount和ae.type都是字符串,不知道是什么停止执行查询。

PrestoUserError: PrestoUserError(type=USER_ERROR, name=SYNTAX_ERROR, message="line 3:1: Unexpected parameters (varchar) for function sum. Expected: sum(double) , sum(real) , sum(bigint) , sum(interval day to second) , sum(interval year to month) , sum(decimal(p,s)) "

SELECT SUM(ae.amount) filter (where ae.type IN ('USA')) FROM db_1.table1

以下效果很好

SELECT SUM(CAST(ae.amount as DECIMAL(13,2))) filter (where ae.type IN ('USA')) FROM db_1.table1

根据错误信息,ae.amount 是一个字符串而不是数字。您需要将其转换为一个数字。从你的问题中不清楚是什么类型,但让我们说一个 int:

SELECT SUM(CAST(ae.amount as INT)) filter (where ae.type IN ('USA'))
FROM db_1.table1

如果出现转换错误,您可以使用以下方法找到失败的行:

SELECT ae.amount
FROM db_1.table1
WHERE ae.type IN ('USA') AND
      TRY_CAST(ae.amount as INT) IS NULL AND
      ae.amount IS NOT NULL