다음 SQL 의 실행 결과로 옳은 것은? (정렬 시 NULL 은 마지막… | [SQLD] SQL 개발자 기출유형 모의고사 4회 상세 페이지

1[SQLD] SQL 개발자 기출유형 모의고사 4회
다음 SQL 의 실행 결과로 옳은 것은? (정렬 시 NULL 은 마지막에 온다)

[예약]

예약번호편명
1KE101
2KE101
3LJ007
4KE101
5OZ330
6LJ007
7(null)
SELECT 편명, COUNT(*) AS 예약수,
       COUNT(*) OVER () AS 편수
  FROM 예약
 GROUP BY 편명
 ORDER BY 편명;
1
편명예약수편수
KE10134
LJ00724
OZ33014
(null)14
2
편명예약수편수
KE10137
LJ00727
OZ33017
(null)17
3
편명예약수편수
KE10133
LJ00723
OZ33013
(null)13
4
편명예약수편수
KE10133
LJ00723
OZ33013
해설

논리 처리 순서상 GROUP BY 가 먼저 끝나 편명별 4행(NULL 편명 그룹 포함)이 되고, 윈도우 함수는 이 그룹화된 4행 위에서 COUNT(*) OVER () 를 계산해 모든 행에 4를 준다.

예약수는 각 그룹의 원래 행 수이고, 편명이 NULL 인 7번도 하나의 그룹이 되어 마지막 행으로 나온다.

  • 편수를 7로 둔 표는 윈도우 함수가 그룹화 전 원본 행을 센다고 본 것이다.
  • 세 행만 있는 표는 GROUP BY 가 NULL 그룹을 버린다고 본 것이다.
  • NULL 행은 있지만 편수가 3인 표는 NULL 그룹을 세지 않는다고 오해한 결과이다.

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

이어서 풀어보기

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