5. 자주 하는 실수 (Tip)
실수 1: 버킷 컬럼에 함수를 씌워 WHERE 를 건다
WHERE EXTRACT(YEAR FROM ord_date) = 2025 는 결과가 맞아도 ord_date 인덱스를 못 씁니다. 예제 5 처럼 >= 시작 AND < 다음 시작 으로 걸고 버킷은 GROUP BY 에서만 만듭니다.
실수 2: 달력 연도와 ISO 주를 섞는다
연말의 12-30 이 달력 연도 2024 인데 ISO 1주라 "2024년 1주" 로 묶이면 52주 뒤의 주와 섞입니다. ISO 주는 ISO 연도와, 달력 월은 달력 연도와 짝을 맞춥니다. 안전한 방법은 주의 월요일 날짜 하나를 묶음 키로 쓰는 것입니다.
실수 3: 누적 달성률을 월 달성률의 평균으로 낸다
1월 105% 와 2월 90% 의 평균은 97.5% 처럼 보이지만 월 규모가 다르면 어긋납니다. 누적 실적을 누적 목표로 나누는 것이 정확한 값입니다. 예제 8 의 3월은 월 달성률 95.8% 이고 누적은 96.9% 입니다.
실수 4: INT 끼리 나눠 정수로 잘린다
MSSQL 은 amt / target_amt 가 정수 나눗셈이라 달성률이 0 이나 1 로 나옵니다. 항상 * 100.0 을 앞에 곱합니다. 분모가 0 이 될 수 있는 전년 값은 NULLIF 로 감쌉니다. H2 는 모든 모드에서 정수 나눗셈이라 이 차이를 재현하지 않습니다.