홈 › SQL 실무 › 04 / 9

기간별 통계 보고서

일·주·월 집계, 전년 동기 대비, 누적 달성률
섹션 6진행 0 / 9

6. 정리

기간별 보고서는 날짜를 버킷으로 바꾸는 것에서 시작합니다. 조건은 >= 시작 AND < 다음 시작 범위로 걸고, 버킷(EXTRACT, TO_CHAR, DATE_FORMAT, CONVERT)은 SELECT 와 GROUP BY 에서만 만들어 인덱스를 살립니다. 월 버킷과 ISO 주 함수는 DB 마다 달라서 2.2 의 표로 확인합니다.

ISO 주는 월요일에 시작하고 연말·연초에 전년·다음 해 주에 속할 수 있어서 연도-주 묶음에는 ISO 연도(또는 주의 월요일 날짜)를 써야 합니다. MSSQL 의 DATEPART(WEEK) 는 ISO 와 다릅니다. 기간 누계(MTD)는 기준일 다음 날 미만으로 끝을 걸고 전년 같은 기간을 같은 쿼리에서 조건만 바꿔 비교합니다.

전년 동월은 연-1 자기 조인이 안전합니다. LAG(amt, 12) 는 12행 전이라 빈 달이 있으면 한 달씩 밀리며, 중급 10 에서 본 달력 조인으로 빈 달을 채울 때만 맞습니다. 증감률과 달성률은 * 100.0 과 NULLIF 로 계산하고, 누적 달성률은 누적 실적을 누적 목표로 나눕니다. 다음 레슨은 중복 데이터를 찾고 정리하는 방법을 다룹니다.