Oracle/SQL2012. 5. 9. 13:16

주별 집계에 대한 내용을 살펴보자.

 

예제를 위해 아래와 같이 테이블을 생성하자.

-- 1
DROP TABLE t1 PURGE;
CREATE TABLE t1 AS SELECT TO_DATE ('20501226') + ROWNUM - 1 AS dt FROM XMLTABLE ('1 to 14');

 

아래 쿼리는 YYYY-WW 포맷 모델을 사용했기 때문에 2050-53 주차 데이터가 1건으로 집계된다.

-- 2
SELECT   TO_CHAR (dt, 'YYYY-WW') AS yw
       , MIN (dt) AS dt_min
       , MAX (dt) AS dt_max
       , COUNT (*) AS cn
    FROM t1
GROUP BY TO_CHAR (dt, 'YYYY-WW')
ORDER BY 1;

YW      DT_MIN     DT_MAX     CN
------- ---------- ---------- --
2050-52 2050-12-26 2050-12-30  5
2050-53 2050-12-31 2050-12-31  1
2051-01 2051-01-01 2051-01-07  7
2051-02 2051-01-08 2051-01-08  1

4 행이 선택되었습니다.

 

아래와 같이 IYYY-IW 포맷 모델을 사용하면 주 단위로 7일치 데이터를 집계할 수 있다. 

-- 3
SELECT   TO_CHAR (dt, 'IYYY-IW') AS yw
       , MIN (dt) AS dt_min
       , MAX (dt) AS dt_max
       , COUNT (*) AS cn
    FROM t1
GROUP BY TO_CHAR (dt, 'IYYY-IW')
ORDER BY 1;

YW      DT_MIN      DT_MAX     CN
------- ----------  ---------- --
2050-52 2050-12-26  2051-01-01  7
2051-01 2051-01-02  2051-01-08  7

2 행이 선택되었습니다.


Posted by 정희락_