Oracle 기준으로 진료과별 소계를 얻으려고 작성한 다음 SQL 의 … | [SQLD] SQL 개발자 기출유형 모의고사 6회 상세 페이지

1[SQLD] SQL 개발자 기출유형 모의고사 6회
Oracle 기준으로 진료과별 소계를 얻으려고 작성한 다음 SQL 의 실제 실행 결과로 옳은 것은?

[처방실적]

의사명진료과금액
윤하내과100
윤하내과50
서진내과70
도윤외과40
SELECT 의사명, 진료과, SUM(금액) AS 합계
  FROM 처방실적
 GROUP BY ROLLUP(의사명, 진료과)
 ORDER BY 의사명, 진료과;
1
의사명진료과합계
도윤외과40
도윤(null)40
서진내과70
서진(null)70
윤하내과150
윤하(null)150
(null)내과220
(null)외과40
(null)(null)260
2
의사명진료과합계
도윤외과40
도윤(null)40
서진내과70
서진(null)70
윤하내과150
윤하(null)150
(null)(null)260
3
의사명진료과합계
도윤외과40
도윤(null)40
서진내과70
서진(null)70
윤하내과150
윤하(null)150
4
의사명진료과합계
도윤외과40
서진내과70
윤하내과150
(null)내과220
(null)외과40
(null)(null)260
해설

ROLLUP 은 인수 순서대로 계층을 만들어 (의사명, 진료과), (의사명), 총계를 집계하므로 의사명별 소계만 생기고 진료과별 소계는 없다.

의사마다 한 진료과에만 속해 있어 의사별 소계 값이 상세 값과 같고, 마지막에 총계 260 이 붙어 7행이 된다.

  • 내과 220·외과 40 소계가 있는 6행은 인수 순서를 바꾼 ROLLUP(진료과, 의사명) 결과이다.
  • 총계가 없는 결과는 ROLLUP 이 총계도 만든다는 점을 놓친 것이다.
  • 두 방향 소계가 모두 있는 결과는 CUBE 의 결과이다.

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

이어서 풀어보기

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