학습용 기출·복원자료 분류 확인SQLD · 2023년 49회 SQL 기본 및 활용 · 24번
현재 행의 값과 바로 이전 행의 값을 함께 출력하고, 이전 행이 없으면 0을 표시하는 표현은?
1
LAG(COL1, 1, 0) OVER(ORDER BY 정렬열)
정답 근거LAG의 두 번째 인수 1은 한 행 앞을, 세 번째 인수 0은 앞선 행이 없을 때 기본값을 뜻한다. 분석 순서를 확정하려면 OVER 절에 정렬 기준도 필요하다. 따라서 1번 보기 ‘LAG(COL1, 1, 0) OVER(ORDER BY 정렬열)’의 적용 여부를 문제 조건과 대조해야 한다.
2
LEAD(COL1, 1, 0) OVER(ORDER BY 정렬열)
오답 이유LEAD는 이전 행이 아니라 다음 행의 값을 가져온다. 따라서 2번 보기 ‘LEAD(COL1, 1, 0) OVER(ORDER BY 정렬열)’의 적용 여부를 문제 조건과 대조해야 한다.
3
LAG(COL1, 0, 1) OVER(ORDER BY 정렬열)
오답 이유오프셋 0은 현재 행을 가리키며 기본값도 요구한 0이 아니다. 따라서 3번 보기 ‘LAG(COL1, 0, 1) OVER(ORDER BY 정렬열)’의 적용 여부를 문제 조건과 대조해야 한다.
4
FIRST_VALUE(COL1) OVER(ORDER BY 정렬열)
오답 이유FIRST_VALUE는 윈도 프레임의 첫 값을 반복할 뿐 직전 행 값을 반환하지 않는다. 따라서 4번 보기 ‘FIRST_VALUE(COL1) OVER(ORDER BY 정렬열)’의 적용 여부를 문제 조건과 대조해야 한다.
ANSWER & EXPLANATION
정답 1번
핵심 판단은 1번 ‘LAG(COL1, 1, 0) OVER(ORDER BY 정렬열)’입니다. LAG의 두 번째 인수 1은 한 행 앞을, 세 번째 인수 0은 앞선 행이 없을 때 기본값을 뜻한다. 분석 순서를 확정하려면 OVER 절에 정렬 기준도 필요하다.