홈 › SQL 고급 › 02 / 10

집계 분석 함수와 윈도 프레임

SUM OVER, 누적합, 이동 평균, 비율
섹션 6진행 0 / 10

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 버전이 낮으면 누적합이 오류가 나니 버전을 먼저 확인합니다.