2017-05-12 19 views
0

일부 집계 데이터를 얻기 위해 아래의 쿼리를 실행 중입니다. 일부 문제는 반올림이 제대로 작동하지 않고 반올림이 작동하지 않고 소수점 이하 10 자리까지 표시됩니다. 선택한 열의 데이터 유형이 integer이고 데이터가 정확하면 문제를 해결하는 데 도움이됩니다.Dashdb 라운드 문제

Select 
round( 
DOUBLE(sum(IDEAL_CYCLE_TIME)) * DOUBLE(sum(PARTS_PRODUCED_COUNT)) 
/DOUBLE(sum(RUNNING_TIME_COUNT))*100, 
2) as value 
From PERFORMANCE_AGGR_MONTH_FACT 
Where ORG_DIM='O1' AND MONTH_NUMBER BETWEEN 1 AND 10 

답변

1

나는 행동이 실수의 근사치 데이터 형식 DOUBLE에 숫자를 캐스팅 당신의 선택의 결과 믿습니다. 따라서 내장 된 ROUND 함수는 관찰하는 것처럼 "예기치 않은"결과를 반환 할 수 있습니다. 예를 들어

SELECT ROUND((DOUBLE(1) * DOUBLE(1))/DOUBLE(1)*100, 2) FROM SYSIBM.SYSDUMMY1 

은 내 환경에 100.00000000000001을 반환합니다.

대신 데이터 유형 DECIMAL을 사용할 수 있습니까?