문제
다음 윈도우 함수에서 SALARY=3000인 직원의 결과가 다른 경우는?
[EMPLOYEE] SALARY: 2000, 3000, 3000, 4000, 5000
SQLSQL1: SUM(SALARY) OVER(ORDER BY SALARY ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) SQL2: SUM(SALARY) OVER(ORDER BY SALARY RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)
첫 번째 SALARY=3000 직원 기준으로 올바른 것은?
① SQL1=8000, SQL2=8000 ② SQL1=5000, SQL2=8000 ③ SQL1=8000, SQL2=11000 ④ SQL1=5000, SQL2=5000
정답
2번
해설
ROWS는 물리적 행 순서로 첫 번째 3000까지만(2000+3000=5000). RANGE는 값 기준으로 같은 값 3000 두 개 모두 포함(2000+3000+3000=8000). UNBOUNDED PRECEDING은 처음부터를 의미하므로 CURRENT ROW까지의 누적합이 달라진다.