SMALL

ORACLE "% "퍼센트 구하기 자료


WITH AAA AS(

SELECT '홍길동1' NAME, 10 CNTS FROM DUAL UNION ALL

SELECT '홍길동2' NAME, 25 CNTS FROM DUAL UNION ALL

SELECT '홍길동3' NAME, 25 CNTS FROM DUAL UNION ALL

SELECT '홍길동4' NAME, 10 CNTS FROM DUAL UNION ALL

SELECT '홍길동5' NAME, 30 CNTS 


)


SELECT NAME

, ROUND(RATIO_TO_REPORT(CNTS) OVER() *100),2) II '%'  CNTS

FROM AAA

;


결과물

 

 NAME

 CNTS

 1

 홍길동1

 10%

 2

 홍길동2

 25%

 3

 홍길동3

 25%

 4

 홍길동4

 10%

 5

 홍길동5


 30%

나오게 됩니다 ㅎ


위처럼 자료가 적을경우 예외없이 정상으로 나오게됩니다

하지만

자료가 많을경우 % 퍼센트가 " .45% " 이런식으로 0.45이지만 0이 안붙어서 나오게됩니다. 그럴 경우에는 아래 처럼 하면됩니다



SELECT NAME,

DECODE(

SUBSTR(

ROUND(RATIO_TO_REPORT(CNTS) OVER() *100),2) II '%' ,1,1)

,'.'

'0' II ROUND(RATIO_TO_REPORT(CNTS) OVER() *100),2) II '%',

ROUND(RATIO_TO_REPORT(CNTS) OVER() *100),2)  II '%'

) CNTS


하시면 0.45%로 나오게 됩니다


감사합니다


LIST
블로그 이미지

SeoHW

,