그룹별 개수에서 나눗셈등이 일어났을때 반올림시 아래와 같이 KY 가 A인 경우는 0.1이라는 숫자가 소실되는 경우가 있습니다.
개발자 입장에서는 반올림이라는 특성으로 당연한 결과이지만 이걸 맞춰줘야 되는경우도 있더군요.
이경우 마지막 에서 33.4가 되게 할수 있는 방법이 있는지 궁금합니다.
고수님들 부탁드립니다.
쿼리 ------------------------------------------
SELECT KY
,DIV
,ORD_DT
,REL_DT
,COUNT(*) OVER(PARTITION BY KY) AS GROUP_COUNT-- 그룹별 개수
,SUM(ORD_DT) OVER(PARTITION BY KY) AS GROUP_SUM_ORD_DT -- 그룹별 합
,SUM(REL_DT) OVER(PARTITION BY KY) AS GROUP_SUM_REL_DT -- 그룹별 합
,ROUND((SUM(REL_DT) OVER(PARTITION BY KY)
- SUM(ORD_DT) OVER(PARTITION BY KY)
) / COUNT(*) OVER(PARTITION BY KY)
,1) AS DISTRI -- 차이 배분
FROM(
SELECT 'A' AS KY , 'A1' AS DIV, 150 AS ORD_DT, 200 AS REL_DT FROM DUAL UNION ALL
SELECT 'A' AS KY , 'A2' AS DIV, 120 AS ORD_DT, 150 AS REL_DT FROM DUAL UNION ALL
SELECT 'A' AS KY , 'A3' AS DIV, 150 AS ORD_DT, 170 AS REL_DT FROM DUAL UNION ALL
SELECT 'B' AS KY , 'B1' AS DIV, 150 AS ORD_DT, 160 AS REL_DT FROM DUAL UNION ALL
SELECT 'B' AS KY , 'B2' AS DIV, 120 AS ORD_DT, 130 AS REL_DT FROM DUAL
)
결과 --------------------------
KY DIV ORD_DT REL_DT GROUP_COUNT GROUP_SUM_ORD_DT GROUP_SUM_REL_DT DISTRI
A A1 150 200 3 420 520 33.3
A A2 120 150 3 420 520 33.3
A A3 150 170 3 420 520 33.3
B B1 150 160 2 270 290 10
B B2 120 130 2 270 290 10
원하는 결과 -------------
A A1 150 200 3 420 520 33.3
A A2 120 150 3 420 520 33.3
A A3 150 170 3 420 520 33.4
B B1 150 160 2 270 290 10
B B2 120 130 2 270 290 10
|