아래 구조의 테이블에서 RATE(백분율 퍼센트) 오차 0.1을 구하여 제일큰 비중을 차지한 비율에 오차만큼 더해준다.
이때, 같은 수치를 가진 비율에 대해서는 가장 큰 코드값을 구하여 더해준다.
CODE |
RATE |
1 |
40 |
2 |
40 |
3 |
19.9 |
SELECT
CODE
,RATE + (CASE WHEN CODE = (MAX(MAX_CODE) OVER()) THEN DIFF ELSE 0 END) RATE
FROM
(
SELECT
CODE
,RATE
,100 - SUM(RATE) OVER() AS DIFF
,(CASE WHEN (MAX(RATE) OVER()) = RATE THEN CODE END) MAX_CODE
FROM
(
SELECT '1' CODE, 40 RATE FROM DUAL
UNION ALL SELECT '2', 40 FROM DUAL
UNION ALL SELECT '3', 19.9 FROM DUAL
)
)
>> 결과데이터 <<
CODE |
RATE |
1 |
40 |
2 |
40.1 |
3 |
19.9 |
[출처] [oracle] 백분율 오차제거|작성자 사랑해u
'SQL > Query' 카테고리의 다른 글
Oracle 필드 추가, 수정, 삭제, 코멘트 (0) | 2015.12.29 |
---|---|
Oracle 테이블 백업 (0) | 2015.12.29 |
[Oracle] DUAL 테이블에 INSERT가 가능할까? (0) | 2015.12.29 |
sql 마지막 찾기 (0) | 2015.12.11 |
[오라클] 함수를 이용하여 간단하게 합계 및 백분율 구하기 (0) | 2015.11.27 |
[SQL] 기본 SQL문 (0) | 2015.02.03 |
[Oracle] 해당 데이터에 중복값 카운트를 구하는 쿼리 (0) | 2014.10.15 |
매출월별 전월대비 증감,누적금액 구하기 SQL (0) | 2014.09.05 |