Oracle - Calculation for Month, 오라클 월별 통계(합계) 구하기

반응형
SELECT --1 
    M01,M02,M03,M04,M05,M06,M07,M08,M09,M10,M11,M12,MT
	FROM (
          SELECT --2
            SUM(DECODE(SUBSTR(A.REG_DATE,5,2),'01',1,0)) AS  M01,
            SUM(DECODE(SUBSTR(A.REG_DATE,5,2),'02',1,0)) AS  M02, 
            SUM(DECODE(SUBSTR(A.REG_DATE,5,2),'03',1,0)) AS  M03,
            SUM(DECODE(SUBSTR(A.REG_DATE,5,2),'04',1,0)) AS  M04,
            SUM(DECODE(SUBSTR(A.REG_DATE,5,2),'05',1,0)) AS  M05,
            SUM(DECODE(SUBSTR(A.REG_DATE,5,2),'06',1,0)) AS  M06,
            SUM(DECODE(SUBSTR(A.REG_DATE,5,2),'07',1,0)) AS  M07,
            SUM(DECODE(SUBSTR(A.REG_DATE,5,2),'08',1,0)) AS  M08,
            SUM(DECODE(SUBSTR(A.REG_DATE,5,2),'09',1,0)) AS  M09,
            SUM(DECODE(SUBSTR(A.REG_DATE,5,2),'10',1,0)) AS  M10,
            SUM(DECODE(SUBSTR(A.REG_DATE,5,2),'11',1,0)) AS  M11,
            SUM(DECODE(SUBSTR(A.REG_DATE,5,2),'12',1,0)) AS  M12,
            SUM(1) AS MT -- Total Sum
          FROM PJ_WORKLOAD A --table 
          WHERE A.REG_DATE BETWEEN '20210101' AND '20211231' --date column
        )

 

2번째 SELECT 문에서 통계 처리 해야 할 부분에 대해서 정리 한다.

SUM 과 DECODE 문을 통해서, 특정날자의 구간을 비교 해서 만족 한다면, 1개를 카운트 한다.

예) 20211122 의 경우 M11에서 1로 변환된다. 다른 DECODE에서는 0으로 반환

종합된 결과를 최종 에서 다시 한번 셀렉트 해주면 좀 더 깔끔한 결과를 볼 수 있다.

물론 두번째 SELECT 문만 사용해도 문제는 없다.

댓글

Designed by JB FACTORY