문제
다음 [매출] 테이블에서 SQL문을 실행했을 때, 이름이 '박'인 행의 last_val 값을 쓰시오.
| 이름 | 부서 | 금액 |
|---|---|---|
| 김 | A | 300 |
| 이 | A | 100 |
| 박 | A | 200 |
| 최 | B | 400 |
| 정 | B | 250 |
SQLSELECT 이름, 부서, 금액, LAST_VALUE(금액) OVER (PARTITION BY 부서 ORDER BY 금액 ASC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) AS last_val FROM 매출;
정답
300
300
해설
PARTITION BY 부서로 A/B 부서별로 분할되고, ORDER BY 금액 ASC로 금액 오름차순 정렬된다. A 부서에서는 이(100) → 박(200) → 김(300) 순으로 정렬된다. LAST_VALUE()는 윈도우 프레임 내의 마지막 값을 반환하는데, ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING으로 파티션 전체 범위를 지정했으므로, A 부서에서 가장 큰 금액인 김의 300이 last_val이 된다.