我有一个Postgres 8.2表,其列定义为bigint
数据类型。
当我sum(column)
时,返回类型为numeric
。我想强制类型转换求和为bigint
,因为我确信结果不会超过bigint
的最大值。我能够使用这样的子查询实现这一点:
select T.big_col_total::bigint from (select sum(big_col) as big_col_total from big_table) T;
有没有办法在不使用子查询的情况下执行此操作,即,我可以直接以某种方式对sum
进行类型转换吗?我尝试了几种方法,都会导致语法错误。
(后台:我正在从Hibernate运行这个查询,所以对我来说很重要的是将查询中的返回数据类型限制为BigInteger.bigint + bigint = numeric(Java端的BigDecimal)
答案 0 :(得分:1)
只需使用:
select sum(big_col)::bigint as total
from big_table
您应该尽快升级到支持的版本(例如9.x)。