Oracle 에서 다음 SQL 의 실행 결과로 옳은 것은?[청구]청구번… | [SQLD] SQL 개발자 기출유형 모의고사 10회 상세 페이지

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

[청구]

청구번호고객유형금액
1정민입원300
2정민통원40
3하늘통원60
4정민통원20
SELECT *
  FROM 청구
 PIVOT (SUM(금액) FOR 유형 IN ('입원' AS 입원, '통원' AS 통원))
 ORDER BY 청구번호;
1
청구번호고객유형입원통원
1정민입원300(null)
2정민통원(null)40
3하늘통원(null)60
4정민통원(null)20
2
청구번호고객입원통원
1정민300(null)
2정민(null)40
3하늘(null)60
4정민(null)20
3
고객입원통원
정민30060
하늘(null)60
4
청구번호고객입원통원
1정민3000
2정민040
3하늘060
4정민020
해설

PIVOT 은 집계 대상(금액)과 FOR 열(유형)을 뺀 나머지 모든 열로 암묵적 GROUP BY 하므로, 청구번호가 남아 있는 이 쿼리는 원본 4행이 그대로 4행이 된다.

각 행은 자기 유형 칸에만 금액이 들어가고 다른 칸은 NULL 이며, 고객별로 합치려면 인라인 뷰에서 청구번호를 빼고 PIVOT 해야 한다.

  • 고객별 2행으로 합친 표는 청구번호가 그룹 기준이 된다는 점을 놓쳤다.
  • 빈 칸을 0으로 쓴 표는 해당 값이 없을 때 SUM 이 NULL 을 돌려준다는 점을 놓쳤다.
  • 유형 열이 남은 표는 FOR 절의 열이 결과 열로 바뀌며 사라진다는 점을 놓쳤다.

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

이어서 풀어보기

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