문제
다음 SQL에서 PRICE=2000인 상품의 누적 개수를 구할 때 결과가 다른 이유는?
상품 테이블: PRICE (1500, 2000, 2000, 2500)
SQLSQL1: COUNT(*) OVER(ORDER BY PRICE ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) SQL2: COUNT(*) OVER(ORDER BY PRICE RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)
PRICE=2000인 첫 번째 행에서:
① SQL1=2, SQL2=3
② SQL1=2, SQL2=2
③ SQL1=3, SQL2=2
④ SQL1=3, SQL2=3
정답
1번
해설
ROWS는 물리적 행 기준으로 처리하여 첫 번째 2000 행까지 2건(1500, 2000)을 카운트합니다. RANGE는 값 기준으로 처리하여 2000 이하의 모든 값을 포함하므로 3건(1500, 2000, 2000)을 카운트합니다. 따라서 SQL1=2, SQL2=3이 됩니다.