4

bigintデータ型として定義された列を持つ Postgres 8.2 テーブルがあります。

私が行うとき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)

4

1 に答える 1

3

使用するだけです:

select sum(big_col)::bigint as total 
from big_table

また、できるだけ早くサポートされているバージョン (9.x など) にアップグレードする必要があります。

于 2012-12-05T19:17:44.043 に答える