행위

"오라클 비율 ratio to report"의 두 판 사이의 차이

DB CAFE

(새 문서: === 오라클 비율 RATIO_TO_REPORT === # 오라클에서 전체 합계 대비 비율 또는 백분율을 구하기 위한 함수 # RATIO_TO_REPORT 이용하여 비율 반환 # 여...)
 
5번째 줄: 5번째 줄:
 
==== 비율 구하기 ====
 
==== 비율 구하기 ====
 
# 조회된 전체 급여(sal) 합계 대비 해당 행의 비율 반환
 
# 조회된 전체 급여(sal) 합계 대비 해당 행의 비율 반환
<script lang=sql>
+
<source lang=sql>
 
SELECT ename
 
SELECT ename
 
     , sal
 
     , sal
16번째 줄: 16번째 줄:
 
==== 백분율 구하기 ====
 
==== 백분율 구하기 ====
 
# 비율에서 소수점 둘째자리 자른다음 100을 곱하면 백분율
 
# 비율에서 소수점 둘째자리 자른다음 100을 곱하면 백분율
<script lang=sql>
+
<source lang=sql>
 
SELECT ename
 
SELECT ename
 
     , sal
 
     , sal
26번째 줄: 26번째 줄:
 
==== GROUP BY  비율 구하기 ====
 
==== GROUP BY  비율 구하기 ====
 
# 그룹함수를 사용한 컬럼인 경우 RATIO_TO_REPORT 함수 인자에 그룹함수 값 대입 필요
 
# 그룹함수를 사용한 컬럼인 경우 RATIO_TO_REPORT 함수 인자에 그룹함수 값 대입 필요
<script lang=sql>
+
<source lang=sql>
 
SELECT job
 
SELECT job
 
     , SUM(sal) AS total_sal
 
     , SUM(sal) AS total_sal
35번째 줄: 35번째 줄:
 
==== ROLLUP 백분율 구하기 ====
 
==== ROLLUP 백분율 구하기 ====
 
# ROLLUP 함수를 사용하여 합계를 구하고 싶을 경우,SELECT 문을 다시 감싸서 결과 산출
 
# ROLLUP 함수를 사용하여 합계를 구하고 싶을 경우,SELECT 문을 다시 감싸서 결과 산출
<script lang=sql>
+
<source lang=sql>
 
SELECT DECODE(GROUPING(job), 1, '합계', job) AS job
 
SELECT DECODE(GROUPING(job), 1, '합계', job) AS job
 
     , SUM(total_sal)                        AS total_sal
 
     , SUM(total_sal)                        AS total_sal
51번째 줄: 51번째 줄:
 
==== PARTITION BY 사용하여 백분율 구하기 ====
 
==== PARTITION BY 사용하여 백분율 구하기 ====
 
# OVER 함수에 PARTITION BY를 사용하여 해당 컬럼의 그룹별 비율 계산
 
# OVER 함수에 PARTITION BY를 사용하여 해당 컬럼의 그룹별 비율 계산
<script lang=sql>
+
<source lang=sql>
 
SELECT ename
 
SELECT ename
 
     , job  
 
     , job  

2023년 2월 13일 (월) 16:48 판

thumb_up 추천메뉴 바로가기


1 오라클 비율 RATIO_TO_REPORT[편집]

  1. 오라클에서 전체 합계 대비 비율 또는 백분율을 구하기 위한 함수
  2. RATIO_TO_REPORT 이용하여 비율 반환
  3. 여기에 100을 곱하면 백분율(%)로 바꿀 수 있다.

1.1 비율 구하기[편집]

  1. 조회된 전체 급여(sal) 합계 대비 해당 행의 비율 반환
SELECT ename
     , sal
     , RATIO_TO_REPORT(sal) OVER() AS sal_ratio
  FROM emp
 WHERE job = 'MANAGER'


1.2 백분율 구하기[편집]

  1. 비율에서 소수점 둘째자리 자른다음 100을 곱하면 백분율
SELECT ename
     , sal
     , ROUND(RATIO_TO_REPORT(sal) OVER(), 2) * 100 || '%'  AS sal_rate
  FROM emp
 WHERE job = 'MANAGER'

1.3 GROUP BY 비율 구하기[편집]

  1. 그룹함수를 사용한 컬럼인 경우 RATIO_TO_REPORT 함수 인자에 그룹함수 값 대입 필요
SELECT job
     , SUM(sal) AS total_sal
     , RATIO_TO_REPORT(SUM(sal)) OVER() AS sal_ratio
  FROM emp
 GROUP BY job

1.4 ROLLUP 백분율 구하기[편집]

  1. ROLLUP 함수를 사용하여 합계를 구하고 싶을 경우,SELECT 문을 다시 감싸서 결과 산출
SELECT DECODE(GROUPING(job), 1, '합계', job) AS job
     , SUM(total_sal)                        AS total_sal
     , ROUND(SUM(sal_ratio), 2) * 100 || '%' AS sal_ratio
  FROM (
         SELECT job
              , SUM(sal) AS total_sal
              , RATIO_TO_REPORT(SUM(sal)) OVER() AS sal_ratio
           FROM emp
          GROUP BY job 
       )
 GROUP BY ROLLUP(job)

1.5 PARTITION BY 사용하여 백분율 구하기[편집]

  1. OVER 함수에 PARTITION BY를 사용하여 해당 컬럼의 그룹별 비율 계산
SELECT ename
     , job 
     , sal
     , ROUND(RATIO_TO_REPORT(sal) OVER(PARTITION BY job), 2) * 100 || '%' AS sal_rate
  FROM emp
 WHERE job IN ('ANALYST', 'MANAGER')