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

앞서 406쪽 42번 질문에 답변해주신거 읽었는데 이해가 안돼서요...


42번 문제에 나온 테이블이고 이 테이블을 토대로 테이블을 만든후에

문제에서 주어진 sql문을 입력했는데


[제가 sql 실행할때 작성한 내용 :

CREATE TABLE SALES_1Q (

SEQ NUMBER,

PLACE_ID VARCHAR2(20),

MONTH_CD VARCHAR2(10),

SALES_AMT NUMBER

);


INSERT INTO SALES_1Q VALUES (1, 'PLACE_1', 'JAN', 100);

INSERT INTO SALES_1Q VALUES (2, 'PLACE_2', 'FEB', 150);

INSERT INTO SALES_1Q VALUES (3, 'PLACE_3', 'MAR', 200);

INSERT INTO SALES_1Q VALUES (4, 'PLACE_4', 'JAN', 300);

INSERT INTO SALES_1Q VALUES (5, 'PLACE_5', 'FEB', 350);

INSERT INTO SALES_1Q VALUES (6, 'PLACE_6', 'MAR', 400);

INSERT INTO SALES_1Q VALUES (7, 'PLACE_7', 'JAN', 500);

INSERT INTO SALES_1Q VALUES (8, 'PLACE_8', 'FEB', 550);

INSERT INTO SALES_1Q VALUES (9, 'PLACE_9', 'MAR', 600);


SELECT *

FROM (

SELECT PLACE_ID, MONTH_CD, SALES_AMT

FROM SALES_1Q

)

PIVOT (

SUM(SALES_AMT)

FOR MONTH_CD IN ('JAN' AS JAN, 'FEB' AS FEB, 'MAR' AS MAR)

)

ORDER BY PLACE_ID;]


결과가

이렇게 나왔습니다 결과가 한글로 적혀있는건 sql을 실행한 사이트가 영문 사이트여서 번역 눌렀더니 저렇게 나왔어요

문제집에 있는 답과 실행시켜보니 답이 달라서 한번 더 문의드립니다..

답변
2026-08-12 22:11:04

안녕하세요. 먼저 혼동을 드려 정말 죄송합니다.

다시 확인해 보니 이 문제는 데이터셋 자체에 오류가 있었고,

제가 처음 답변드릴 때 가지고 있던 문제로 테스트하다 보니 답변까지 잘못 전해드리고 말았습니다.

바로잡아 주셔서 감사합니다.


원래 문제의 데이터셋은 PLACE_ID가 아래와 같이 구성되어 있었어야 합니다.

SEQ 1~3 → PLACE_1

SEQ 4~6 → PLACE_2

SEQ 7~9 → PLACE_3

이렇게 PLACE_ID가 3개로 묶여야 PIVOT 결과에서 각 PLACE별로 JAN, FEB, MAR 값이 채워지면서 보기의 정답과 일치하게 됩니다.


반면 교재에 실린 데이터셋처럼 PLACE_ID가 PLACE_1부터 PLACE_9까지 모두 다른 값이면,

각 행이 서로 다른 PLACE로 나뉘고 각 PLACE마다 하나의 월만 값이 있으므로 나머지는 NULL이 됩니다.

이 경우에는 말씀하신 대로 보기 중에 일치하는 정답이 없는 것이 맞습니다.


직접 SQL을 실행해 결과까지 대조해 보신 덕분에 명확히 확인할 수 있었습니다.

이 부분은 정오표에 반영해 두겠습니다.

꼼꼼히 짚어봐 주셔서 다시 한번 감사드립니다!

정오표는 아래 링크에서 확인 가능합니다.

https://cafe.naver.com/daynal

  • 관리자
    2026-08-12 22:11:04

    안녕하세요. 먼저 혼동을 드려 정말 죄송합니다.

    다시 확인해 보니 이 문제는 데이터셋 자체에 오류가 있었고,

    제가 처음 답변드릴 때 가지고 있던 문제로 테스트하다 보니 답변까지 잘못 전해드리고 말았습니다.

    바로잡아 주셔서 감사합니다.


    원래 문제의 데이터셋은 PLACE_ID가 아래와 같이 구성되어 있었어야 합니다.

    SEQ 1~3 → PLACE_1

    SEQ 4~6 → PLACE_2

    SEQ 7~9 → PLACE_3

    이렇게 PLACE_ID가 3개로 묶여야 PIVOT 결과에서 각 PLACE별로 JAN, FEB, MAR 값이 채워지면서 보기의 정답과 일치하게 됩니다.


    반면 교재에 실린 데이터셋처럼 PLACE_ID가 PLACE_1부터 PLACE_9까지 모두 다른 값이면,

    각 행이 서로 다른 PLACE로 나뉘고 각 PLACE마다 하나의 월만 값이 있으므로 나머지는 NULL이 됩니다.

    이 경우에는 말씀하신 대로 보기 중에 일치하는 정답이 없는 것이 맞습니다.


    직접 SQL을 실행해 결과까지 대조해 보신 덕분에 명확히 확인할 수 있었습니다.

    이 부분은 정오표에 반영해 두겠습니다.

    꼼꼼히 짚어봐 주셔서 다시 한번 감사드립니다!

    정오표는 아래 링크에서 확인 가능합니다.

    https://cafe.naver.com/daynal

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