안녕하세요!
다름이 아니라 전체 매출액 대비 결제액에 대한 비중을 백분율로 나타내고 싶은데 RATIO_TO_REPORT 함수를 이렇게 쓰는게 맞을까요?
또한 백분율 갑이 .9로 나왔을 경우 앞자리에 0을 붙여 넣고 싶은데 이 부분은 잘 못하겠습니다 ㅜㅜ
결과는 이렇게 표현하고 싶습니다
|서비스 코드|결제 수단 코드| 결제액 | 비중 |
| 1003 | 1 | 1000 | 10.31 |
| 1003 | 1 | 1000 | 0.9 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | -- 전체 매출 대비 결제액 비중 -- PAY_WAY_CD : 결제 수단, SLS_PRC : 결제액 WITH T1 AS ( SELECT '1003' AS SVR_TP_CD, '1' AS PAY_WAY_CD, '1000' AS SLS_PRC FROM dual UNION ALL SELECT '1003' AS SVR_TP_CD, '2' AS PAY_WAY_CD, '2700' AS SLS_PRC FROM dual UNION ALL SELECT '1003' AS SVR_TP_CD, '2' AS PAY_WAY_CD, '1200' AS SLS_PRC FROM dual UNION ALL SELECT '1003' AS SVR_TP_CD, '3' AS PAY_WAY_CD, '2300' AS SLS_PRC FROM dual UNION ALL SELECT '1003' AS SVR_TP_CD, '4' AS PAY_WAY_CD, '2500' AS SLS_PRC FROM dual ) SELECT SVR_TP_CD , PAY_WAY_CD , SUM (SLS_PRC) AS SLS_PRC , ROUND(RATIO_TO_REPORT( SUM (SLS_PRC)) OVER() *100, 2) AS RAT /* 비중 */ FROM T1 GROUP BY SVR_TP_CD, PAY_WAY_CD; |
1. RATIO_TO_REPORT 사용법 맞습니다.
2. 숫자 표현은 사용환경에 따라 다르게 표시될 수 있습니다.
- 0 을 굳이 붙여야 한다면 to_char 함수로 포멧을 지정하는 방안이 있습니다.
- 주의 : 출력 결과의 자료형은 숫자가 아닌 문자가 됩니다.
- 비율은 소수점 이하 고정자리수로 보여주는게 보기 좋을 듯 합니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | WITH t1 AS ( SELECT '1003' svr_tp_cd, '1' pay_way_cd, 1000 sls_prc FROM dual UNION ALL SELECT '1003' , '2' , 2700 FROM dual UNION ALL SELECT '1003' , '2' , 1200 FROM dual UNION ALL SELECT '1003' , '3' , 2300 FROM dual UNION ALL SELECT '1003' , '4' , 2500 FROM dual UNION ALL SELECT '1003' , '5' , 98 FROM dual UNION ALL SELECT '1003' , '6' , 10 FROM dual ) SELECT svr_tp_cd , pay_way_cd , SUM (sls_prc) sls_prc , ROUND(RATIO_TO_REPORT( SUM (sls_prc)) OVER() * 100, 2) rat , TO_CHAR(RATIO_TO_REPORT( SUM (sls_prc)) OVER() * 100, 'FM990.00' ) rat_1 -- 고정자리수 , RTRIM(TO_CHAR(RATIO_TO_REPORT( SUM (sls_prc)) OVER() * 100, 'FM990.99' ), '.' ) rat_2 -- 가변자리수 FROM t1 GROUP BY svr_tp_cd, pay_way_cd ORDER BY svr_tp_cd, pay_way_cd ; |