안녕하세요. 통계쿼리 구축 질문입니다. 0 2 1,035

by 석이 [2016.01.05 13:30:29]


안녕하세요. 몇번 로그인 하면서 강의 눈팅정도만 해오다가, 직접 처음으로 글을 남기네요.

많은것을 배우고 있습니다.

 

제가 드릴 질문은 아래의 첫번째 표에서 두번째 표로 데이터를 바꿔서 뽑아오고 싶습니다.

현재 첫번째 표는 1차적으로 DECODE처리를 하여 data필드와 count로 나누어 둔 결과입니다.

field year section data count
CPL 2007 2개월보장긴급 4 5
CPL 2007 2개월보장긴급 6 2
CPL 2007 2개월보장긴급 8 1
CPL 2007 일반 4 129
CPL 2007 일반 6 28
CPL 2007 일반 7 11
CPL 2008 2개월보장긴급 4 10
CPL 2008 2개월보장긴급 6 1
CPL 2008 일반 4 49
CPL 2008 일반 6 18
CPL 2008 일반 7 2
CPL 2008 초청 4 63
CPL 2008 초청 6 25
CPL 2008 초청 7 1
CPL 2008 초청 8 10
CPL 2009 2개월보장긴급 4 15
CPL 2009 2개월보장긴급 6 2
CPL 2009 2개월보장긴급 7 1
CPL 2009 단편 4 11
CPL 2009 단편 6 1
CPL 2009 단편 7 2
CPL 2009 일반 4 21
CPL 2009 일반 6 5
CPL 2009 일반 7 2
CPL 2009 일반 8 1

데이터는 밑으로 쭉 연장되며 350여개의 데이터가 있습니다.

field는 총 6가지, year는 2007 ~ 현재 데이터까지 뽑아야 하며(2007~2016), section은 4가지 종류(2개월보장긴급,일반,초청,단편)가 있습니다.

data는 0~8까지 있으며 각 데이터를 field,year,secion 별로 0~8번의 데이터를 입력하고 그 합계를 구하고 싶습니다.

field year section 0 1 2 3 4 5 6 7 8 SUM
CPL 2007 2개월보장긴급 0 0 0 0 5 0 2 0 1 8
CPL 2007 일반 0 0 0 0 129 0 28 11 0 168
CPL 2007 초청 0 0 0 0 0 0 0 0 0 0
CPL 2007 단편 0 0 0 0 0 0 0 0 0 0
CPL 2008 2개월보장긴급 0 0 0 0 10 0 1 0 0 11
CPL 2008 일반 0 0 0 0 49 0 18 2 0 69
CPL 2008 초청 0 0 0 0 63 0 25 1 1 90
CPL 2008 단편 0 0 0 0 0 0 0 0 0 0
CPL 2009 2개월보장긴급 0 0 0 0 15 0 2 1 0 18
CPL 2009 일반 0 0 0 0 21 0 5 2 1 29
CPL 2009 초청 0 0 0 0 0 0 0 0 0 0
CPL 2009 단편 0 0 0 0 11 0 1 2 0 14

첫번째 표 데이터를 두번째 표와 같이 나올 수 있도록 변경하고 싶습니다.

각 field별, 년도별, section별로 각 줄이 SUM이 0 이여도 표시될수 있어야 합니다.

쿼리로 처리 가능한 문제인지 정확히모르겠습니다.

많은 조언 부탁드리겠습니다. 감사합니다.

 

by 창조의날개 [2016.01.05 13:50:05]

SELECT field, year, section
     , SUM(DECODE(DATA,0,COUNT,0)) 0
     , SUM(DECODE(DATA,1,COUNT,0)) 1
     , SUM(DECODE(DATA,2,COUNT,0)) 2
     , SUM(DECODE(DATA,3,COUNT,0)) 3
     , SUM(DECODE(DATA,4,COUNT,0)) 4
     , SUM(DECODE(DATA,5,COUNT,0)) 5
     , SUM(DECODE(DATA,6,COUNT,0)) 6
     , SUM(DECODE(DATA,7,COUNT,0)) 7
     , SUM(DECODE(DATA,8,COUNT,0)) 8
     , SUM(COUNT) SUM
FROM ()
GROUP BY field, year, section
ORDER BY field, year, section
;

이런식으로 하면 되겠지만..

 

이미 위 데이터가 GROUP BY로 만들어진 것이고 DECODE문을 이용했다면

 

위에 DECODE 조건을 함께 적용하면 될듯 합니다.

 

기존 쿼리의 GROPY BY에는 DATA 컬럼이 들어 갔겠지만..

 

그 컬럼을 DECODE에 사용하고 field, year, section 로만 GROUP BY 하시면 될거 같네요..

 

 

원본 쿼리가 있다면 좀더 확인이 가능할 수도 있겠네요..

 

 


by 석이 [2016.01.05 14:10:42]

감사합니다. 답변해주신 것을 참고하여 바로 해결하였습니다.

ㅋㅋ.ㅎㅎㅎㅎㅎ..기쁘네요 ㅋㅋㅋ 정말 감사합니다.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입