안녕하세요.
쿼리를 구상하다가 막히는 부분이 있어 문의 드립니다. 완전히 새로 짜는건 아니고, 기존의 쿼리를 수정해야 하는 이슈입니다.
간략히 요점부터 말씀 드리자면
==============================================================
1. 현재는 일별로 SP를 통해 매일 정해진 시간마다 회원수 정보를 갱신함.
2. 아래 보여진 것처럼 4개의 정보임.
3. 이를 월별로 보여줘야 하는게 쟁점인데
테스트-신규-탈회는 각 일마다 카운팅 된 것이라 GROUP BY하면 월별 합산 가능.
하지만 누적값은 맨 말일값으로 가져와야함.
==============================================================
의 특성상 각 칼럼을 GROUP BY시키면 일마다 누적되어 갱신된 누적값 자체도 SUM 처리 되어서 달마다 60만건이 넘게 산출 되는데요. 단순 쿼리로는 해결이 되지 않을거 같은데 혹시 어떤 식으로 처리하면 좋을지 팁을 좀 주실 수 있을까요?
==============================================================
년월일 | 테스트인원 | 신규인원 | 탈회인원 | 정회원인원(누적) |
2014-08-31 | 0 | 3 | 17 | 21,208 |
2014-08-30 | 8 | 1 | 2 | 21,222 |
2014-08-29 | 212 | 57 | 116 | 21,223 |
2014-08-28 | 166 | 57 | 104 | 21,282 |
2014-08-27 | 154 | 32 | 19 | 21,329 |
2014-08-26 | 147 | 59 | 92 | 21,316 |
2014-08-25 | 197 | 81 | 78 | 21,349 |
2014-08-24 | 7 | 4 | 27 | 21,346 |
2014-08-23 | 5 | 2 | 15 | 21,370 |
2014-08-22 | 151 | 37 | 18 | 21,383 |
2014-08-21 | 140 | 41 | 40 | 21,364 |
2014-08-20 | 175 | 36 | 68 | 21,363 |
2014-08-19 | 177 | 37 | 16 | 21,395 |
2014-08-18 | 91 | 44 | 51 | 21,374 |
2014-08-17 | 7 | 6 | 13 | 21,381 |
2014-08-16 | 7 | 4 | 1 | 21,388 |
2014-08-15 | 3 | 5 | 0 | 21,385 |
2014-08-14 | 77 | 13 | 9 | 21,380 |
2014-08-13 | 80 | 25 | 92 | 21,376 |
2014-08-12 | 104 | 69 | 43 | 21,443 |
2014-08-11 | 169 | 88 | 37 | 21,417 |
2014-08-10 | 2 | 1 | 7 | 21,366 |
2014-08-09 | 12 | 5 | 4 | 21,372 |
2014-08-08 | 130 | 45 | -2 | 21,371 |
2014-08-07 | 113 | 25 | 55 | 21,324 |
2014-08-06 | 130 | 33 | 93 | 21,354 |
2014-08-05 | 130 | 67 | 22 | 21,413 |
2014-08-04 | 193 | 45 | 3 | 21,368 |
2014-08-03 | 0 | 6 | 0 | 21,326 |
2014-08-02 | 1 | 39 | 0 | 21,320 |
2014-08-01 | 38 | 23 | 21 | 21281 |
Comment 2
-
Hisory
2014.10.17 00:50
-
무념
2014.10.17 17:20
순서대로 a, b, c, d, e 컬럼이라 하고 용도상 데이터는 많지 않을 것 같습니다.
간단하게 서브쿼리와 조인으로(돌날라 오는 소리가 ㅜㅜ), 이것보단 처음에 집계를 낼때 구조 변경을 해서
해당일의 정회원 수만 따로 저장하는게 더 좋아보입니다.
Select substring(resultTB.yyyymmdd, 1, 7) yymm, resultTB.b, resultTB.c, resultTB.d, t1.e From
(select (sortTB.yyyymm + '-' + max(sortTB.dd)) yyyymmdd, sum(sortTB.b) b, sum(sortTB.c) c, sum(sortTB.d) d From
(select substring(a, 1,7) yyyymm,
substring(a, 9, 2) dd, b,c, d, e from t1) sortTB
group by sortTB.yyyymm) resultTB
Inner Join
t1
On resultTB.yyyymmdd = t1.a
단순한 생각으로는 월말 기준의 데이터만 따로 만들어 저장후
위 데이터와 yyyy-mm 기준으로 join 걸여 보여주면 되지 읺을까여?