p.406쪽 42번 문제 해설에는 답이 1번이라고 적혀있는데
해설을 봐도 왜 1번인지 이해가 안돼요ㅠㅠ
저는 아무리봐도 보기 1~4번 중에 정답이 없어보여요ㅜㅜ
만약 해설대로 1번이라면
PLACE_1은 JAN값밖에 존재하지 않는데 왜 1번에는 PLACE_1에 FEB, MAR도 값이 존재하는건지 모르겠습니다....
안녕하세요. 질문하신 부분을 설명드리겠습니다.
먼저 이 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 값을 모두 가진 한 행으로 표현됩니다.
이 결과와 일치하는 보기가 정답이 됩니다. 질문 감사합니다.