Oracle 기준으로 다음 SQL 의 실행 결과로 옳은 것은?[약품사용… | [SQLD] SQL 개발자 기출유형 모의고사 6회 상세 페이지

1[SQLD] SQL 개발자 기출유형 모의고사 6회
Oracle 기준으로 다음 SQL 의 실행 결과로 옳은 것은?

[약품사용]

약품진료과수량
A내과20
B내과30
C내과(null)
D외과50
SELECT 약품, 진료과, 수량,
       ROUND(RATIO_TO_REPORT(수량)
             OVER (PARTITION BY 진료과), 2) AS 비율
  FROM 약품사용
 ORDER BY 약품;
1
약품진료과수량비율
A내과200.2
B내과300.3
C내과(null)0
D외과500.5
2
약품진료과수량비율
A내과200.2
B내과300.3
C내과(null)(null)
D외과500.5
3
약품진료과수량비율
A내과200.4
B내과300.6
C내과(null)(null)
D외과501
4
약품진료과수량비율
A내과200.4
B내과300.6
C내과(null)0
D외과501
해설

RATIO_TO_REPORT 는 값을 파티션 합계로 나눈 비율로, 내과 합계는 NULL 을 뺀 50 이라 A 0.4, B 0.6 이고 외과 D 는 1 이다.

수량이 NULL 인 C 는 나눌 값이 없으므로 비율도 NULL 로 남는다.

  • 0.2·0.3·0.5 인 결과는 PARTITION BY 를 무시하고 전체 합 100 으로 나눈 것이다.
  • C 의 비율을 0 으로 본 결과는 NULL 을 0 으로 바꿔 계산한 것이다.
  • 두 오류를 합친 결과는 전체 합으로 나누고 NULL 도 0 으로 본 것이다.

오류나 개정된 내용이 보이면 알려주세요

이어서 풀어보기

[SQLD] SQL 개발자 기출유형 모의고사 6회 50문항 이어서 보기문제·정답·해설을 한 페이지에서 이어서 볼 수 있어요SQLD SQL 개발자 실전 모의고사 암기장 전체 보기