2012-12-05 3 views
1

나는 bigint 데이터 유형으로 정의 된 컬럼을 가진 Postgres 8.2 테이블을 가지고있다.포스트그레스 - bigint로 요약 (bigint)을 typecast하는 방법?

sum(column)의 경우 반환 유형은 numeric입니다. 나는 결과가 최대 값 bigint을 초과하지 않을 것이라는 것을 알고 있기 때문에 합계가 캐스팅 된 타입을 강제로 bigint으로 만들고 싶습니다. 즉, 내가 직접 어떻게 든 sum을 캐스트 할 수

select T.big_col_total::bigint from (select sum(big_col) as big_col_total from big_table) T;

서브 쿼리를 사용하지 않고이 작업을 수행 할 수있는 방법이 있나요 :이 같은이 사용하여 하위 쿼리를 달성 할 수 있었다? 두 가지 방법을 시도했는데 두 가지 모두 구문 오류가 발생합니다.

(배경 :. 나는 BigInteger를 제한 쿼리에서 반환 데이터 형식을 유지 나를 중요하므로 최대 절전 모드에서이 쿼리를 실행 해요 BIGINT + BIGINT = 숫자 (BigDecimal의 자바 측)

답변

1

가능한 한 빨리

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

을 그리고 당신은 지원되는 버전으로 (예 : 9.x의)를 업그레이드해야합니다

+0

나 최대 절전 모드에서 위의 쿼리를 실행이 오류가 'org.hibernate을 : 그냥 사용합니다... QueryException : ': bigint, :]' 'sum (big_col) :: bigint'를 (b/w가 공백 인) sum (big_col) :: bigint'으로 변경하면, 나는 여전히 얻을 수 있습니다. 같은 오류. Hibernate가 생각하는 것처럼 보입니다. bigint는 매개 변수로 이름 지어졌으며,이 문제를 어떻게 해결할 수 있습니까? 감사! –

+5

@svhyd : 대신'cast (sum (big_col) AS bigint)'를 시도하십시오. Hiberante에서는 콜론 (':')이 특별한 의미를 가지기 때문에 실패한 것으로 보입니다. 문자를 이스케이프하거나 표시된 대체 구문을 대신 사용해야합니다. –

+0

감사합니다. '선택 캐스팅 (합계 (big_col) AS bigint) AS 합계 from big_table' –