문제
다음 [주문] 테이블에서 SQL문을 실행했을 때 고객='홍길동'인 행의 next_order 값을 쓰시오.
| 고객 | 주문일 | 금액 |
|---|---|---|
| 홍길동 | 2024-01-15 | 50000 |
| 김철수 | 2024-01-20 | 30000 |
| 홍길동 | 2024-02-10 | 75000 |
| 이영희 | 2024-02-15 | 40000 |
| 홍길동 | 2024-03-05 | 60000 |
SQLSELECT 고객, 주문일, 금액, LEAD(금액, 2, -1) OVER (PARTITION BY 고객 ORDER BY 주문일) AS next_order FROM 주문 WHERE 고객 IN ('홍길동', '김철수', '이영희');
정답
60000
60000
해설
LEAD(금액, 2, -1)는 현재 행에서 2행 뒤의 금액 값을 가져오며, 없으면 -1을 반환합니다. PARTITION BY 고객으로 고객별로 분할되고, ORDER BY 주문일로 정렬됩니다. 홍길동의 첫 번째 행(2024-01-15, 50000)에서 2행 뒤는 세 번째 행(2024-03-05, 60000)이므로 next_order는 60000입니다.