책 내용 질문하기
RATIO_TO_REPORT 함수 값 범위 질문
도서
2027 한 권으로 끝내는 시나공 SQLD + 시험장에 들고 가는 킬러 문항 32제
페이지
253,254
조회수
98
작성일
2026-08-08
작성자
김*솔
첨부파일

RATIO_TO_REPORT 함수의 범위가 0 초과 1 이하라고 되어있는데 현재 행의 값이 0이나 음수인 경우에는 어떻게 되는 건가요?

답변
2026-08-10 07:45:15

좋은 질문 감사합니다.
결론부터 말씀드리면, 교재에 적힌 '0 초과 1 이하'라는 범위는 그룹 내 모든 값이 양수일 때를 전제로 한 설명입니다.
RATIO_TO_REPORT(값)는 내부적으로 값 / SUM(값) OVER (파티션)으로 계산됩니다. 즉 현재 행의 값을 그룹 전체 합계로 나눈 비율이므로, 현재 행의 값이 0이거나 음수이면 결과 범위가 달라집니다.


현재 행의 값이 0인 경우 : 0 / 합계 = 0이 되어, '0 초과'가 아니라 0이 그대로 반환됩니다.
예) 값이 (0, 30, 70)이면 → 0/100 = 0
현재 행의 값이 음수인 경우 : 비율도 음수가 됩니다.
예) 값이 (-20, 40, 80)이면 → -20/100 = -0.2
더 나아가 양수와 음수가 섞여 합계가 작아지면 비율이 1을 초과할 수도 있습니다.
예) 값이 (120, -20)이면 → 120/100 = 1.2


정리하면, '0 초과 1 이하'는 그룹 내 모든 값이 양수인 일반적인 상황에서 성립하는 범위이며, 값에 0이나 음수가 포함되면 0, 음수, 심지어 1을 초과하는 결과도 나올 수 있습니다. 실무에서 RATIO_TO_REPORT는 매출·수량처럼 양수 데이터의 구성비(점유율)를 구할 때 주로 쓰이기 때문에 통상 그 범위로 설명하는 것입니다.
이런 이유 때문에 253 표에 통상 범위로 표시했습니다.

  • 서*재
    2026-08-10 07:45:15

    좋은 질문 감사합니다.
    결론부터 말씀드리면, 교재에 적힌 '0 초과 1 이하'라는 범위는 그룹 내 모든 값이 양수일 때를 전제로 한 설명입니다.
    RATIO_TO_REPORT(값)는 내부적으로 값 / SUM(값) OVER (파티션)으로 계산됩니다. 즉 현재 행의 값을 그룹 전체 합계로 나눈 비율이므로, 현재 행의 값이 0이거나 음수이면 결과 범위가 달라집니다.


    현재 행의 값이 0인 경우 : 0 / 합계 = 0이 되어, '0 초과'가 아니라 0이 그대로 반환됩니다.
    예) 값이 (0, 30, 70)이면 → 0/100 = 0
    현재 행의 값이 음수인 경우 : 비율도 음수가 됩니다.
    예) 값이 (-20, 40, 80)이면 → -20/100 = -0.2
    더 나아가 양수와 음수가 섞여 합계가 작아지면 비율이 1을 초과할 수도 있습니다.
    예) 값이 (120, -20)이면 → 120/100 = 1.2


    정리하면, '0 초과 1 이하'는 그룹 내 모든 값이 양수인 일반적인 상황에서 성립하는 범위이며, 값에 0이나 음수가 포함되면 0, 음수, 심지어 1을 초과하는 결과도 나올 수 있습니다. 실무에서 RATIO_TO_REPORT는 매출·수량처럼 양수 데이터의 구성비(점유율)를 구할 때 주로 쓰이기 때문에 통상 그 범위로 설명하는 것입니다.
    이런 이유 때문에 253 표에 통상 범위로 표시했습니다.

· 5MB 이하의 zip, 문서, 이미지 파일만 가능합니다.
· 폭언, 욕설, 비방 등은 관리자에 의해 경고없이 삭제됩니다.