다음 SQL 의 실행 결과로 옳은 것은?[수강생]학생번호이름1민준2서연… | [SQLD] SQL 개발자 기출유형 모의고사 7회 상세 페이지

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

[수강생]

학생번호이름
1민준
2서연
3지호
4하은

[수강신청]

학생번호강좌번호점수
11085
12092
210(null)
33070
310(null)
SELECT S.이름,
       (SELECT COUNT(*) FROM 수강신청 R
         WHERE R.학생번호 = S.학생번호) AS 신청수,
       (SELECT MAX(R.점수) FROM 수강신청 R
         WHERE R.학생번호 = S.학생번호) AS 최고점
  FROM 수강생 S
 ORDER BY S.학생번호;
1
이름신청수최고점
민준292
서연1(null)
지호270
하은0(null)
2
이름신청수최고점
민준292
서연1(null)
지호270
3
이름신청수최고점
민준292
서연1(null)
지호270
하은(null)(null)
4
이름신청수최고점
민준292
서연0(null)
지호170
하은0(null)
해설

SELECT 절의 스칼라 서브쿼리는 수강생 한 행마다 한 값을 돌려주므로 4행이 모두 나오고, 신청이 없는 하은은 COUNT(*) 가 0, MAX 는 NULL 이다.

COUNT(*) 는 점수가 NULL 인 신청 행도 세므로 서연 1·지호 2 이고, MAX 는 NULL 을 빼고 계산해 서연은 NULL, 지호는 70 이다.

  • 하은의 신청수를 NULL 로 본 표는 대상 행이 없을 때 COUNT 도 NULL 이라고 오해한 것이다.
  • 하은이 빠진 표는 스칼라 서브쿼리를 내부 조인처럼 본 결과이다.
  • 서연 0·지호 1 인 표는 COUNT(*) 를 COUNT(점수)처럼 NULL 을 빼고 센 결과이다.

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

이어서 풀어보기

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