PostgreSQL sum 类型转换为 bigint

Aar*_*der 2 sql postgresql types aggregate-functions bigint

我正在对整数列进行 sum() 操作,并且希望将结果类型转换为 bigint - 以避免错误。然而,当我尝试使用 sum(myvalue)::bigint 时,它仍然给我一个超出范围的错误。

我可以对查询做些什么来让它工作吗?或者我必须将列类型更改为 bigint 吗?

Erw*_*ter 5

当前的手册比2013 年的更加明确:

\n
\n

sum( integer) \xe2\x86\x92bigint

\n
\n

如果您的列myvalue确实具有像您所说的类型integer,那么结果就是bigint无论如何,并且添加的强制转换sum(myvalue)::bigint只是噪音。

\n

无论哪种方式,要得到“超出范围”错误,结果都必须大于bigint可容纳的范围:

\n
\n

-9223372036854775808 至 +9223372036854775807

\n
\n

人们必须聚合大量integer值 (>= 2^32 * 2^31)。如果是这样,请将基列转换为bigint,从而强制结果为numeric

\n
SELECT sum(myvalue::int8) ...\n
Run Code Online (Sandbox Code Playgroud)\n

更可能的解释是您的列实际上具有不同的数据类型,或者错误源于其他原因。问题中没有足够的细节。

\n