책 내용 질문하기
p.406쪽 42번 문제 질문(해설 p.484)
도서
2027 한 권으로 끝내는 시나공 SQLD + 시험장에 들고 가는 킬러 문항 32제
페이지
406,484
조회수
112
작성일
2026-08-10
작성자
이*은
첨부파일

p.406쪽 42번 문제 해설에는 답이 1번이라고 적혀있는데

해설을 봐도 왜 1번인지 이해가 안돼요ㅠㅠ

저는 아무리봐도 보기 1~4번 중에 정답이 없어보여요ㅜㅜ

만약 해설대로 1번이라면

PLACE_1은 JAN값밖에 존재하지 않는데 왜 1번에는 PLACE_1에 FEB, MAR도 값이 존재하는건지 모르겠습니다....


답변
2026-08-11 15:11:12

안녕하세요. 질문하신 부분을 설명드리겠습니다.


먼저 이 SQL의 실제 실행 결과부터 보겠습니다.

PIVOT은 행으로 늘어서 있던 MONTH_CD 값(JAN, FEB, MAR)을 컬럼으로 바꾸고, 각 PLACE_ID별로 SALES_AMT를 집계합니다.

따라서 결과는 1번과 같습니다. 즉 PLACE_1도 JAN(100)뿐 아니라 FEB(150), MAR(200) 값이 모두 존재합니다.


왜 PLACE_ID를 기준으로 그룹핑되는가가 이 문제의 핵심입니다.

PIVOT의 그룹핑 기준은 명시적으로 적혀 있지 않고,

인라인 뷰에서 선택한 컬럼 중 PIVOT에 사용된 컬럼(집계 대상 SALES_AMT, 기준 컬럼 MONTH_CD)을 제외한 나머지 컬럼이 자동으로 그룹핑 기준이 됩니다.


이 SQL에서는 인라인 뷰가 PLACE_ID, MONTH_CD, SALES_AMT 세 컬럼을 선택했고,

이 중 SUM 대상인 SALES_AMT와 FOR에 쓰인 MONTH_CD를 빼면 남는 것은 PLACE_ID뿐입니다.

그래서 PLACE_ID가 행을 묶는 기준이 되어 PLACE_ID별로 한 행씩 만들어지는 것입니다.


정리하면, PIVOT은 '세로로 있던 월별 데이터를 가로 컬럼으로 전환'하는 기능이며,

그 결과 각 PLACE_ID는 JAN·FEB·MAR 값을 모두 가진 한 행으로 표현됩니다.

이 결과와 일치하는 보기가 정답이 됩니다. 질문 감사합니다.

  • 관리자
    2026-08-11 15:11:12

    안녕하세요. 질문하신 부분을 설명드리겠습니다.


    먼저 이 SQL의 실제 실행 결과부터 보겠습니다.

    PIVOT은 행으로 늘어서 있던 MONTH_CD 값(JAN, FEB, MAR)을 컬럼으로 바꾸고, 각 PLACE_ID별로 SALES_AMT를 집계합니다.

    따라서 결과는 1번과 같습니다. 즉 PLACE_1도 JAN(100)뿐 아니라 FEB(150), MAR(200) 값이 모두 존재합니다.


    왜 PLACE_ID를 기준으로 그룹핑되는가가 이 문제의 핵심입니다.

    PIVOT의 그룹핑 기준은 명시적으로 적혀 있지 않고,

    인라인 뷰에서 선택한 컬럼 중 PIVOT에 사용된 컬럼(집계 대상 SALES_AMT, 기준 컬럼 MONTH_CD)을 제외한 나머지 컬럼이 자동으로 그룹핑 기준이 됩니다.


    이 SQL에서는 인라인 뷰가 PLACE_ID, MONTH_CD, SALES_AMT 세 컬럼을 선택했고,

    이 중 SUM 대상인 SALES_AMT와 FOR에 쓰인 MONTH_CD를 빼면 남는 것은 PLACE_ID뿐입니다.

    그래서 PLACE_ID가 행을 묶는 기준이 되어 PLACE_ID별로 한 행씩 만들어지는 것입니다.


    정리하면, PIVOT은 '세로로 있던 월별 데이터를 가로 컬럼으로 전환'하는 기능이며,

    그 결과 각 PLACE_ID는 JAN·FEB·MAR 값을 모두 가진 한 행으로 표현됩니다.

    이 결과와 일치하는 보기가 정답이 됩니다. 질문 감사합니다.

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