[SQL] 전월 증감 리포트
튜닝사례까지는 아니지만..
db segment 증가량은 어느 사이트나 관심의 대상이다.
만약 매월 segment 사용량 데이터를 수집하고 있다면 이 raw data 로
전월대비 리포트를 뽑을수 있다.
예를 들어
시점, owner, segment 를 매월 수집했다면..
2019년 10월 사용량과 9월 대비 증가량을 뽑고자 한다면..
select 수집일, owner, round(sum(bytes)) seg
from 수집한데이터테이블
where 수집일 in ('201909','201910')
group by 수집일, owner
수집일, owner 별 사용량 합이 구해진다.
owner 가 OWN1, OWN2 이 있다고 하자.
select sum(decode(rn,1,seg)) total
,sum(rn * seg) tot_dif
,sum(decode(rn,1,decode(owner,'OWN1',seg))) tot_own1
,sum(decode(owner,'OWN1',rn * seg) ) tot_own1_dif
,sum(decode(rn,1,decode(owner,'OWN2',seg))) tot_own2
,sum(decode(owner,'OWN2',rn * seg) ) tot_own2_dif
from (
select 수집일, owner, round(sum(bytes)) seg, decode(수집일,'201910',1,'201909',-1) rn
from 수집한데이터테이블
where 수집일 in ('201909','201910')
group by 수집일, owner
)
rn 이라는 가공의 컬럼을 만들어서 현재월이면 1, 지난 월이면 -1 이 나오게 해서
sum 실행시 전월이면 마이너스가 된다.