책 내용 질문하기
p200, 237, 243 질문
도서
2027 한 권으로 끝내는 시나공 SQLD + 시험장에 들고 가는 킬러 문항 32제
페이지
200,237,243
조회수
101
작성일
2026-08-07
작성자
황*용
첨부파일

안녕하세요. SQLD 공부도중 몇 가지 오류? 및 의문점이 들어서 질문하게 되었습니다.



1. p200

중간부분(표 아래)에 "인라인 뷰의 컬럼은 메인쿼리에서 참조 가능하다. 반대로 서브쿼리(인라인 뷰)의 컬럼을 메인쿼리에서 참조는 불가능하다."라고 적혀있습니다. 전자, 후자가 같은 말을 하는 데 전자는 가능하다고 하고, 후자는 불가능하다라고 하는 것 같습니다.

제가 이해한 바로는 인라인 뷰에 있는 컬럼만 메인쿼리에서 사용가능(집계제외)하다고 알고 있는데 맞을까요??


2. p237

SQL문을 보면 부서별로 SAL기준으로 오름차순 정렬하지만, 출력결과에는 103, 104번이 내림차순으로 정렬되어 있습니다.


3. p243

변칙형 윈도잉에서 "4 PRECEDING AND 1 PRECEDING"이면 현재 행 기준 윗 4개행이 아닐까요? 그림에는 3개의 행만 색칠되어 있어 궁금합니다.

오른쪽 그림도 궁금합니다.

답변
2026-08-07 21:49:16

안녕하세요! 꼼꼼히 짚어주신 질문 잘 봤습니다. 하나씩 답변드릴게요.


1. p200 — 인라인 뷰 컬럼 참조
이해하신 내용이 정확합니다. 인라인 뷰의 컬럼만 메인쿼리에서 참조할 수 있고,
그 반대(메인쿼리 컬럼을 인라인 뷰가 참조)는 안 된다는 뜻이 맞습니다.
말씀하신 대로 표 아래 두 문장은 결국 같은 방향을 설명하고 있습니다.
그런데 굳이 같은 내용을 두 번 서술한 데는 이유가 있는데요.
바로 이 두 문장이 시험에서 각각 선지로 등장하기 때문입니다.
"인라인 뷰의 컬럼은 메인쿼리에서 참조 가능하다"와 "메인쿼리의 컬럼을 서브쿼리에서 참조는 불가능하다"가
서로 다른 표현으로 출제되므로, 같은 원리를 양방향 문장 모두에 익숙해지도록 일부러 나란히 실어둔 것입니다.


2. p237 — 윈도우 함수의 ORDER BY
여기서 핵심은, 윈도우 함수의 ORDER BY는 최종 출력을 정렬하는 기준이 아니라 계산(집계)의 기준이라는 점입니다.
해당 SQL의 윈도우 프레임은 ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING으로 파티션 전체 범위입니다. 이 경우 오라클은 원래 데이터가 들어온 순서를 유지한 상태에서 부서별 전체 합계를 구합니다. 즉 ORDER BY SAL이 있어도 그것은 프레임 계산을 위한 정렬일 뿐, 결과 행의 출력 순서까지 바꾸는 것은 아닙니다. 그래서 103, 104번이 SAL 오름차순과 다르게 보이는 것이 정상입니다.
데이널 카페에 올려둔 실습 스크립트를 직접 돌려보시면 결과가 그대로 재현되는 것을 확인하실 수 있습니다.


3. p243 — 변칙형 윈도잉 (여기는 오류가 맞습니다)
왼쪽 그림 4 PRECEDING AND 1 PRECEDING은 4개 행이 색칠되야 하는 게 맞습니다.
현재 행 기준 −4행부터 −1행까지의 범위인데, 경계를 포함하는 방식 때문에 실제로는 −4, −3, −2, −1
그림에서 현재형 전부터 4개 행이 대상이 됩니다.
오른쪽 그림이 잘못 색칠되어 있습니다. 1 FOLLOWING AND 3 FOLLOWING은
현재 행 기준 +1행부터 +3행까지이므로 원래 의도대로라면 해당 범위 행들이 색칠되어야 하는데, 그림에 한칸 밀려서 색칠되어 있습니다.


이 부분은 정오표에 반영하겠습니다. 확인해 주셔서 감사합니다.
질문을 보니 정말 열심히 공부하고 계신 게 느껴지네요.
좋은 결과 있기를 진심으로 응원하겠습니다!

  • 서*재
    2026-08-07 21:49:16

    안녕하세요! 꼼꼼히 짚어주신 질문 잘 봤습니다. 하나씩 답변드릴게요.


    1. p200 — 인라인 뷰 컬럼 참조
    이해하신 내용이 정확합니다. 인라인 뷰의 컬럼만 메인쿼리에서 참조할 수 있고,
    그 반대(메인쿼리 컬럼을 인라인 뷰가 참조)는 안 된다는 뜻이 맞습니다.
    말씀하신 대로 표 아래 두 문장은 결국 같은 방향을 설명하고 있습니다.
    그런데 굳이 같은 내용을 두 번 서술한 데는 이유가 있는데요.
    바로 이 두 문장이 시험에서 각각 선지로 등장하기 때문입니다.
    "인라인 뷰의 컬럼은 메인쿼리에서 참조 가능하다"와 "메인쿼리의 컬럼을 서브쿼리에서 참조는 불가능하다"가
    서로 다른 표현으로 출제되므로, 같은 원리를 양방향 문장 모두에 익숙해지도록 일부러 나란히 실어둔 것입니다.


    2. p237 — 윈도우 함수의 ORDER BY
    여기서 핵심은, 윈도우 함수의 ORDER BY는 최종 출력을 정렬하는 기준이 아니라 계산(집계)의 기준이라는 점입니다.
    해당 SQL의 윈도우 프레임은 ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING으로 파티션 전체 범위입니다. 이 경우 오라클은 원래 데이터가 들어온 순서를 유지한 상태에서 부서별 전체 합계를 구합니다. 즉 ORDER BY SAL이 있어도 그것은 프레임 계산을 위한 정렬일 뿐, 결과 행의 출력 순서까지 바꾸는 것은 아닙니다. 그래서 103, 104번이 SAL 오름차순과 다르게 보이는 것이 정상입니다.
    데이널 카페에 올려둔 실습 스크립트를 직접 돌려보시면 결과가 그대로 재현되는 것을 확인하실 수 있습니다.


    3. p243 — 변칙형 윈도잉 (여기는 오류가 맞습니다)
    왼쪽 그림 4 PRECEDING AND 1 PRECEDING은 4개 행이 색칠되야 하는 게 맞습니다.
    현재 행 기준 −4행부터 −1행까지의 범위인데, 경계를 포함하는 방식 때문에 실제로는 −4, −3, −2, −1
    그림에서 현재형 전부터 4개 행이 대상이 됩니다.
    오른쪽 그림이 잘못 색칠되어 있습니다. 1 FOLLOWING AND 3 FOLLOWING은
    현재 행 기준 +1행부터 +3행까지이므로 원래 의도대로라면 해당 범위 행들이 색칠되어야 하는데, 그림에 한칸 밀려서 색칠되어 있습니다.


    이 부분은 정오표에 반영하겠습니다. 확인해 주셔서 감사합니다.
    질문을 보니 정말 열심히 공부하고 계신 게 느껴지네요.
    좋은 결과 있기를 진심으로 응원하겠습니다!

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