문제
다음 [거래] 테이블에서 SQL문을 실행했을 때 고객코드='C02'이면서 거래일='2024-03-05'인 행의 prev_gap 값을 쓰시오.
| 고객코드 | 거래일 | 거래금액 |
|---|---|---|
| C01 | 2024-01-15 | 250000 |
| C01 | 2024-02-20 | 180000 |
| C02 | 2024-01-10 | 320000 |
| C02 | 2024-03-05 | 410000 |
| C03 | 2024-02-12 | 150000 |
SQLSELECT 고객코드, 거래일, 거래금액, COALESCE(거래금액 - FIRST_VALUE(거래금액) OVER (PARTITION BY 고객코드 ORDER BY 거래일 ROWS BETWEEN 1 PRECEDING AND 1 PRECEDING), 0) AS prev_gap FROM 거래 ORDER BY 고객코드, 거래일;
정답
90000
90000
해설
PARTITION BY 고객코드로 고객별로 나누고, ROWS BETWEEN 1 PRECEDING AND 1 PRECEDING은 바로 이전 행만 프레임에 포함한다. C02의 2024-03-05 행에서 이전 거래금액은 320000이고 현재 거래금액은 410000이므로 410000 - 320000 = 90000이다.