5. 자주 하는 실수 (Tip)
실수 1: ORDER BY 만 쓴 누적합에서 동점 행을 놓친다
날짜가 같은 주문이 있는데 SUM(amt) OVER (ORDER BY ord_date) 를 쓰면 같은 날짜의 모든 행이 그날의 최종 누적값을 받습니다(4절 변형 1). ROWS 프레임을 명시하고 ORDER BY 에 유일한 컬럼을 덧붙입니다.
실수 2: 정수 비율을 100 으로 곱해 잘라 먹는다
amt * 100 / SUM(amt) OVER () 는 MSSQL 에서 정수 나눗셈이라 소수점 이하가 사라집니다. 100.0 을 곱하세요. H2 는 어느 모드에서도 정수 나눗셈이라 H2 결과로는 이 차이를 알 수 없습니다.
실수 3: MSSQL 2008 이하에서 누적합을 쓴다
MSSQL 은 2005 부터 OVER (PARTITION BY) 집계만 되고, 집계 함수의 OVER (ORDER BY) 와 ROWS·RANGE 프레임은 2012 부터 됩니다. 운영 DB 버전이 낮으면 누적합이 오류가 나니 버전을 먼저 확인합니다.