다음 SQL 의 실행 결과로 옳은 것은?[혈압측정]회차수축기11302(… | [SQLD] SQL 개발자 기출유형 모의고사 6회 상세 페이지

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

[혈압측정]

회차수축기
1130
2(null)
3125
4140
SELECT 회차, 수축기,
       LAG(수축기, 1, 0) OVER (ORDER BY 회차) AS 이전,
       LAST_VALUE(수축기) OVER (ORDER BY 회차
         ROWS BETWEEN UNBOUNDED PRECEDING
                  AND UNBOUNDED FOLLOWING) AS 마지막
  FROM 혈압측정
 ORDER BY 회차;
1
회차수축기이전마지막
11300130
2(null)130(null)
3125(null)125
4140125140
2
회차수축기이전마지막
11300140
2(null)130140
3125(null)140
4140125140
3
회차수축기이전마지막
11300140
2(null)130140
31250140
4140125140
4
회차수축기이전마지막
1130(null)140
2(null)130140
3125(null)140
4140125140
해설

LAG(수축기, 1, 0) 의 0 은 이전 행이 아예 없는 첫 행에만 쓰이며, 이전 행의 값이 NULL 이면 그대로 NULL 을 가져온다.

프레임을 처음부터 끝까지로 지정한 LAST_VALUE 는 모든 행에서 마지막 회차 값 140 을 돌려준다.

  • 마지막이 각 행 자신의 값인 결과는 기본 프레임(현재 행까지)으로 계산한 것이다.
  • 3회차 이전을 0으로 본 결과는 기본값이 NULL 값도 대체한다고 오해한 것이다.
  • 1회차 이전이 NULL 인 결과는 세 번째 인수를 무시한 것이다.

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

이어서 풀어보기

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