문제
다음 [주문] 테이블에서 SQL문을 실행했을 때 분기=2인 행의 이전값 컬럼 값을 쓰시오.
| 분기 | 수량 |
|---|---|
| 1 | 50 |
| 2 | 75 |
| 3 | 60 |
| 4 | 90 |
SQLSELECT 분기, 수량, COALESCE(LAG(수량) OVER (ORDER BY 분기), 0) AS 이전값 FROM 주문;
정답
50
50
해설
LAG 함수는 정렬된 순서에서 이전 행의 값을 반환합니다. 분기로 정렬했을 때 분기=2의 이전 행은 분기=1이고, 그 수량은 50입니다. COALESCE는 LAG가 NULL을 반환할 때만 0으로 대체하는데, 분기=2는 이전 행이 존재하므로 50이 반환됩니다.