문제
다음 [재고] 테이블에서 SQL문을 실행했을 때 제품명이 'D'인 행의 prev_qty 값을 쓰시오.
| 제품명 | 수량 |
|---|---|
| A | 80 |
| B | 120 |
| C | 90 |
| D | 160 |
SQLSELECT 제품명, 수량, LAG(수량, 2, -1) OVER (ORDER BY 제품명) AS prev_qty FROM 재고;
정답
120
120
해설
LAG(수량, 2, -1)는 현재 행에서 2행 이전의 수량 값을 반환하며, 값이 없으면 기본값 -1을 반환합니다.
- ORDER BY 제품명으로 정렬하면 'A', 'B', 'C', 'D' 순서가 됩니다.
- 제품명 'D'는 네 번째 행입니다.
- LAG(수량, 2)는 현재 행에서 2행 이전의 값을 가져옵니다.
- 'D'에서 2행 이전은 두 번째 행인 'B'입니다.
- 'B'의 수량은 120이므로, 제품명 'D'의 prev_qty 값은 120입니다.