RATIO_TO_REPORT, 파티션 별 합계에서 차지하는 비율

2024. 3. 3. 10:45DB/SQLQuery

반응형

 

 

ratio_to_report() 함수는 특정 그룹 내에서 각 값의 비율을 계산하는 윈도우 함수이고 그룹화된 데이터에서 각 항목이 전체 그룹에서 차지하는 비율을 계산할 때 유용하다.

 

 

 

SELECT 
    D.DEPARTMENT_NAME,
    COUNT(E.EMPLOYEE_ID) OVER (PARTITION BY E.DEPARTMENT_ID) AS EMPLOYEE_COUNT,
    COUNT(E.EMPLOYEE_ID) OVER (PARTITION BY E.DEPARTMENT_ID) / COUNT(E.EMPLOYEE_ID) OVER () AS RATIO
FROM 
    EMPLOYEES E 
JOIN 
    DEPARTMENTS D ON E.DEPARTMENT_ID = D.DEPARTMENT_ID ORDER BY DBMS_RANDOM.VALUE;

 

 

 

 

 

 

각 부서별로 직원 수와 해당 부서의 전체 직원 수에 대한 비율을 계산


- `COUNT(E.EMPLOYEE_ID) OVER (PARTITION BY E.DEPARTMENT_ID) AS EMPLOYEE_COUNT`:

각 부서별로 직원 수를 카운트하고 부서별로 분할

 

- `COUNT(E.EMPLOYEE_ID) OVER (PARTITION BY E.DEPARTMENT_ID) / COUNT(E.EMPLOYEE_ID) OVER () AS RATIO`: 

각 부서별 직원 수를 전체 직원 수로 나누어 비율을 계산.


이 쿼리를 RATIO_TO_REPORT 함수를 사용한 쿼리로 변경하면

SELECT 
    D.DEPARTMENT_NAME,
    COUNT(E.EMPLOYEE_ID) AS EMPLOYEE_COUNT,
    RATIO_TO_REPORT(COUNT(E.EMPLOYEE_ID)) OVER () AS RATIO
FROM
    EMPLOYEES E
JOIN
    DEPARTMENTS D ON E.DEPARTMENT_ID = D.DEPARTMENT_ID
GROUP BY
    D.DEPARTMENT_NAME;

 

 전체 직원 수 대비 비율을 계산하고  모든 행에 대해 동일한 비율을 적용한다.

 
반응형

'DBMS > SQLQuery' 카테고리의 다른 글

SUBQUERY : INLINE VIEW 인라인 뷰  (0) 2024.03.03
IFNULL , NVL  (0) 2024.03.03
집계 함수와 윈도우 함수  (0) 2024.03.03
NVL NVL2  (0) 2024.02.24
행 제한절 FETCH FIRST OFFSET  (0) 2024.01.02