RATIO_TO_REPORT, 파티션 별 합계에서 차지하는 비율
2024. 3. 3. 10:45ㆍDB/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 |