다음 SQL의 실행 결과로 옳은 것은? (등급은 가나다순으로 정렬된다)… | [SQLD] SQL 개발자 기출유형 모의고사 4회 상세 페이지

1[SQLD] SQL 개발자 기출유형 모의고사 4회
다음 SQL의 실행 결과로 옳은 것은? (등급은 가나다순으로 정렬된다)

[적립내역]

적립번호등급적립
M1골드100
M2골드(null)
M3골드200
M4일반60
M5일반(null)
M6일반(null)
M7실버(null)
SELECT 등급,
       COUNT(적립)          AS C,
       AVG(적립)            AS A1,
       SUM(적립) / COUNT(*) AS A2
  FROM 적립내역
 GROUP BY 등급
 ORDER BY 등급;
1
등급CA1A2
골드2150150
실버0(null)(null)
일반16060
2
등급CA1A2
골드2100100
실버0(null)(null)
일반12020
3
등급CA1A2
골드2150100
실버(null)(null)(null)
일반16020
4
등급CA1A2
골드2150100
실버0(null)(null)
일반16020
해설

AVG(적립)은 NULL 을 뺀 값만 평균해 골드 150, 일반 60 이지만, SUM(적립)/COUNT(*)는 NULL 행까지 분모에 넣어 골드 100, 일반 20 이 된다.

값이 모두 NULL 인 실버는 COUNT(적립)이 0, SUM 이 NULL 이라 나눗셈 결과도 NULL 이다.

  • 실버의 C 를 NULL 로 본 표는 COUNT 가 0 을 돌려준다는 점을 놓쳤다.
  • 골드 평균을 100 으로 본 표는 AVG 가 NULL 을 0 으로 센다고 오해했다.
  • A2 를 A1 과 같게 본 표는 COUNT(*)가 NULL 행도 센다는 점을 놓쳤다.

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

이어서 풀어보기

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