다음 SQL을 실행한 결과로 옳은 것은?[주문]주문번호지점금액1서울12… | [SQLD] SQL 개발자 기출유형 모의고사 1회 상세 페이지

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

[주문]

주문번호지점금액
1서울12000
2대전(null)
3서울8000
4(null)5000
5대전7000
SELECT COUNT(*) AS 건수, SUM(금액) AS 합계,
       COALESCE(MAX(금액), 0) AS 최대
  FROM 주문
 WHERE 지점 = '부산';
1
건수합계최대
(null)(null)0
2
건수합계최대
000
3
건수합계최대
4
건수합계최대
0(null)0
해설

GROUP BY 없이 집계 함수만 쓰면 조건에 맞는 행이 없어도 결과는 항상 1행이며, 이때 COUNT(*)는 0, SUM은 NULL이다.

MAX도 NULL이지만 COALESCE가 0으로 바꾸어 최대는 0이 되고, 같은 쿼리에 GROUP BY를 붙이면 만들어질 그룹이 없어 0행이 된다.

  • 행이 없는 표는 GROUP BY가 있을 때의 동작이다.
  • 합계를 0으로 둔 표는 빈 집합의 SUM을 0으로 착각했다.
  • 건수를 NULL로 둔 표는 COUNT가 빈 집합에서 0을 돌려준다는 점을 놓쳤다.

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

이어서 풀어보기

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