전체 매출액 대비 비중 0 1 1,442

by 옆집누렁이 [Oracle 기초] RATIO_TO_REPORT [2023.05.12 10:38:59]


안녕하세요! 

다름이 아니라 전체 매출액 대비 결제액에 대한 비중을 백분율로 나타내고 싶은데 RATIO_TO_REPORT 함수를 이렇게 쓰는게 맞을까요?

또한 백분율 갑이 .9로 나왔을 경우 앞자리에 0을 붙여 넣고 싶은데 이 부분은 잘 못하겠습니다 ㅜㅜ

결과는 이렇게 표현하고 싶습니다

|서비스 코드|결제 수단 코드| 결제액 | 비중 | 

| 1003 | 1 | 1000 | 10.31 |

| 1003 | 1 | 1000 | 0.9 |

 

-- 전체 매출 대비 결제액 비중
-- 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;

 

by 마농 [2023.05.12 11:11:25]

1. RATIO_TO_REPORT 사용법 맞습니다.
2. 숫자 표현은 사용환경에 따라 다르게 표시될 수 있습니다.
- 0 을 굳이 붙여야 한다면 to_char 함수로 포멧을 지정하는 방안이 있습니다.
- 주의 : 출력 결과의 자료형은 숫자가 아닌 문자가 됩니다.
- 비율은 소수점 이하 고정자리수로 보여주는게 보기 좋을 듯 합니다.
 

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
;

 

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입