반응형
원본 데이터.
Count 통계 구하는 쿼리.
SELECT NVL(to_char(cp_id), 'Total') cp_id, NVL(to_char(datetime, 'YYYYMM'), 'Sum') datetime, count(*) cnt
FROM tbl_subscriber
GROUP BY ROLLUP(cp_id, to_char(datetime, 'YYYYMM'))
- 결과
- 누적 통계 구하는 쿼리.
SELECT cp_id, datetime, sum(cnt) OVER (PARTITION BY cp_id order by datetime) as count
FROM (
SELECT cp_id, to_char(datetime, 'YYYYMM') datetime, count(*) cnt
FROM tbl_subscriber
GROUP BY cp_id, to_char(datetime, 'YYYYMM')
ORDER BY cp_id, datetime ASC
)
- 결과
이와 같다..
^^
cp_id | datetime |
61 | 2008-12-03 |
62 | 2008-11-03 |
62 | 2008-12-03 |
62 | 2008-12-03 |
63 | 2008-12-03 |
63 | 2008-12-03 |
Count 통계 구하는 쿼리.
SELECT NVL(to_char(cp_id), 'Total') cp_id, NVL(to_char(datetime, 'YYYYMM'), 'Sum') datetime, count(*) cnt
FROM tbl_subscriber
GROUP BY ROLLUP(cp_id, to_char(datetime, 'YYYYMM'))
- 결과
cp_id | datetime | cnt |
61 | 200812 | 1 |
61 | Sum | 1 |
62 | 200811 | 1 |
62 | 200812 | 2 |
62 | Sum | 3 |
63 | 200812 | 2 |
63 | Sum | 2 |
Total | Sum | 6 |
- 누적 통계 구하는 쿼리.
SELECT cp_id, datetime, sum(cnt) OVER (PARTITION BY cp_id order by datetime) as count
FROM (
SELECT cp_id, to_char(datetime, 'YYYYMM') datetime, count(*) cnt
FROM tbl_subscriber
GROUP BY cp_id, to_char(datetime, 'YYYYMM')
ORDER BY cp_id, datetime ASC
)
- 결과
cp_id | datetime | cnt |
61 | 200812 | 1 |
62 | 200811 | 1 |
62 | 200812 | 3 |
63 | 200812 | 2 |
이와 같다..
^^
반응형
'Database > Oracle' 카테고리의 다른 글
테이블 사이즈 구하기 (0) | 2009.02.11 |
---|---|
merge into = mysql 의 replace 와 비슷한 기능 (0) | 2009.02.11 |
누적 쿼리 (0) | 2009.02.11 |
Date 관련 query (1) | 2009.02.11 |
날짜 계산 - 날짜 차이 (0) | 2009.02.11 |