다음 SQL 의 실행 결과로 옳은 것은?[월별청구]월금액1402703(… | [SQLD] SQL 개발자 기출유형 모의고사 10회 상세 페이지

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

[월별청구]

월금액
140
270
3(null)
420
560
SELECT 월, 금액,
       MAX(금액) OVER (ORDER BY 월
                       ROWS BETWEEN 1 PRECEDING
                                AND 1 FOLLOWING) AS 이웃최대,
       LEAD(금액, 1, 0) OVER (ORDER BY 월) AS 다음
  FROM 월별청구
 ORDER BY 월;
1
월금액이웃최대다음
1407070
270700
3(null)7020
4206060
560600
2
월금액이웃최대다음
1407070
27070(null)
3(null)7020
4206060
560600
3
월금액이웃최대다음
1407070
27070(null)
3(null)7020
4206060
56060(null)
4
월금액이웃최대다음
1404070
27070(null)
3(null)7020
4207060
560700
해설

ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING 은 앞·현재·뒤 한 행씩 세 행 중 최댓값을 구하므로 4월은 NULL·20·60 중 60이다.

LEAD(금액, 1, 0) 의 기본값 0은 다음 행이 없는 5월에만 쓰이고, 2월은 다음 행 금액이 실제 NULL 이라 NULL 이 나온다.

  • 2월 다음을 0으로 쓴 표는 기본값이 NULL 값까지 대신한다고 본 오해이다.
  • 이웃최대가 40·70·70·70·70 인 표는 처음부터 현재 행까지의 누적 프레임으로 계산했다.
  • 5월 다음을 NULL 로 쓴 표는 세 번째 인수인 기본값을 무시했다.

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

이어서 풀어보기

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