Oracle 기준으로 다음 SQL의 실행 결과로 옳은 것은?[창고]창고… | [SQLD] SQL 개발자 기출유형 모의고사 8회 상세 페이지

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

[창고]

창고코드창고명
W1본관
W2별관
W3냉장
W4야적

[재고]

창고코드품목코드수량
W1P110
W1P25
W3P17
W3(null)3
W5P34
SELECT W.창고코드, COUNT(S.품목코드) AS 품목수, SUM(S.수량) AS 수량합
  FROM 창고 W, 재고 S
 WHERE W.창고코드 = S.창고코드(+)
 GROUP BY W.창고코드
 ORDER BY W.창고코드;
1
창고코드품목수수량합
W1215
W21(null)
W3110
W41(null)
2
창고코드품목수수량합
W1215
W20(null)
W3110
W40(null)
3
창고코드품목수수량합
W1215
W3110
4
창고코드품목수수량합
W1215
W20(null)
W3210
W40(null)
해설

(+) 는 짝이 없을 때 NULL 행을 채울 쪽에 붙으므로 이 쿼리는 창고를 기준으로 한 LEFT OUTER JOIN이며, 재고가 없는 W2·W4 도 NULL 과 결합해 남는다.

COUNT(S.품목코드) 는 NULL 을 세지 않아 W2·W4 는 0, 품목코드가 NULL 인 행이 있는 W3 은 1 이고, 창고에 없는 W5 재고는 결과에 나오지 않는다.

  • INNER 조인처럼 W2·W4 를 버리면 2행이지만 기준 테이블 행은 보존된다.
  • COUNT(*) 라면 W2·W4 가 1 이지만 열을 세므로 0 이다.
  • W3 의 품목코드 NULL 행은 COUNT(열) 에서 빠져 2 가 아니다.

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

이어서 풀어보기

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