728x90
반응형

아래 구조의 테이블에서 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

 

728x90
반응형
블로그 이미지

nineDeveloper

안녕하세요 현직 개발자 입니다 ~ 빠르게 변화하는 세상에 뒤쳐지지 않도록 우리모두 열심히 공부합시다 ~! 개발공부는 넘나 재미있는 것~!

,