설문조사 결과를 보여주고자 합니다. 0 6 1,010

by 보일듯말듯 [SQL Query] [2016.12.01 13:11:18]


테이블은

설문관리 : survey

넘버링 사용유무(Y/N) 설문회차 1차분류 2차분류 타이틀 설문유효기간 시작 설문유효기간 끝 등록자 등록일
POLL_ID USE_YN POLL_SU POLL_TYPE POLL_ST POLL_TITLE START_DT END_DT REG_ID REG_DT
4 Y 1 계약 신규 1111 20161101 99991231 000096 20161116
6 Y 2 계약 신규 신규 계약 설문조사 20161101 20161130 000096 20161116
1 Y 1 계약 월렌 월렌 20161101 20161130 000096 20161114
3 Y 2 계약 월렌 월렌 신규 20161201 20161231 000096 20161114
5 Y 1 사고처리 사고처리 사고처리 20161101 99991231 000096 20161116
2 Y 1 순회정비 순회정비 순회정비 20161101 20161231 000096 20161114
7 Y 2 순회정비 순회정비 테스트 순회정비 20161101 20161130 000096 20161125

문항관리 : survey_poll,  1번문항

POLL_ID POLL_SEQ A_SEQ CONTENT CHK
1 1 0 삼성 월렌트 대여개시 과정은 만족스러웠습니까?
1 1 1 매우 만족한다 (5점)  
1 1 2 만족한다 (4점)  
1 1 3 보통이다 (3점)  
1 1 4 별로 만족하지 않다 (2점) Y
1 1 5 전혀 만족하지 않다 (1점) Y
1 2 0 차량 반납 과정은 만족스러웠습니까?  
1 2 1 매우 만족한다 (5점)  
1 2 2 만족한다 (4점)  
1 2 3 보통이다 (3점)  
1 2 4 별로 만족하지 않다 (2점) Y
1 2 5 전혀 만족하지 않다 (1점) Y
2 1 0 고객님께서는 (정비내용 및 정비금액을 말씀해주시고)  정비서비스를 받으셨습니다. 해당 사항이 맞습니까? 
2 1 1 그렇다  
2 1 2 그렇치 않다 Y
2 1 3 응답거절  
2 2 0 1)번의 질문이 그렇다 라고 답변한 경우에 아래의 만족도를 조사해주세요. 이번에 제공받으신 차량정비서비스는 만족스러우셨나요?
2 2 1 매우만족한다 (5점)   
2 2 2 만족한다 (4점)   
2 2 3 보통이다 (3점)   
2 2 4 별로 만족하지 않다 (2점) Y
2 2 5 전혀 만족하지 않다 (1점)  Y
2 3 0 고객께서 차량정비서비스에 대해 불편하다고 느꼈던 사항은?
2 3 1 구체적인 사례 기재  Y
2 3 2 응답거절  
2 4 0 차량정비서비스 관련 당사에 바라는 것은?  
2 4 1 구체적인 사례 기재 Y
2 4 2 응답거절  
2 5 0 고객의견(상호, 내용)을 삼성 홈페이지에 게시해도 괜찮으시겠습니까?
2 5 1 YES  
2 5 2 NO  
2 5 3 해당사항 없음  
2 6 0 쌩큐콜 내용을 정리해서 입력해주세요.  
2 6 1 내용  Y
2 6 2 해당사항 없음  
2 7 0 고객불만과 관련해서 대표와의 직접통화를 원하시나요?
2 7 1 그렇다  Y
2 7 2 그렇치 않다  
2 7 3 해당사항 없음  
3 1 0 월렌트 차량을 이용하시는 동안 만족스러웠습니까?
3 1 1 매우 만족한다 (5점)  
3 1 2 만족한다 (4점)  
3 1 3 보통이다 (3점)  
3 1 4 별로 만족하지 않다 (2점) Y
3 1 5 전혀 만족하지 않다 (1점) Y

분류1 : cont_call,

응답자 응답자 문항번호 답변값 추가의견        
RENT_MNG_ID RENT_L_CD POLL_ID ANSWER ANSWER_REM ANSWER_DATE UPDATE_DATE REG_ID POLL_S_ID
43745 S1160224 1 4 별로 만족하지 않다 (2점) 2016-11-23 오후 2:03:15 2016-11-23 오후 2:03:15 000096 6
43745 S1160224 2 5 전혀 만족하지 않다 (1점) 2016-11-23 오후 2:03:15 2016-11-23 오후 2:03:15 000096 6
43745 S1160224 3 2   2016-11-23 오후 2:03:15 2016-11-23 오후 2:03:15 000096 6
43745 S1160224 4 1 300000 2016-11-23 오후 2:03:15 2016-11-23 오후 2:03:15 000096 6
43745 S1160224 5 2   2016-11-23 오후 2:03:15 2016-11-23 오후 2:03:15 000096 6
43745 S1160224 6 2 만족한다 (4점) 2016-11-23 오후 2:03:15 2016-11-23 오후 2:03:15 000096 6
43745 S1160224 7 2   2016-11-23 오후 2:03:15 2016-11-23 오후 2:03:15 000096 6
43745 S1160224 8 1 쌩큐콜 내용을 정리해서 입력해주세요 2016-11-23 오후 2:03:15 2016-11-23 오후 2:03:15 000096 6
43764 S1160164 1 1   2016-11-25 오후 4:35:55 2016-11-25 오후 4:35:55 000096 6
43764 S1160164 2 3   2016-11-25 오후 4:35:55 2016-11-25 오후 4:35:55 000096 6
43764 S1160164 3 5   2016-11-25 오후 4:35:55 2016-11-25 오후 4:35:55 000096 6
43764 S1160164 4 2   2016-11-25 오후 4:35:55 2016-11-25 오후 4:35:55 000096 6
43764 S1160164 5 1   2016-11-25 오후 4:35:55 2016-11-25 오후 4:35:55 000096 6
43764 S1160164 6 2   2016-11-25 오후 4:35:55 2016-11-25 오후 4:35:55 000096 6
43764 S1160164 7 1   2016-11-25 오후 4:35:55 2016-11-25 오후 4:35:55 000096 6
43764 S1160164 8 1   2016-11-25 오후 4:35:55 2016-11-25 오후 4:35:55 000096 6

분류2 : accident_call,

분류1과 유사

분류3 : service_call

분류1과 유사

-----------------------------

원하는 결과화면

위에 테이블등을 조인해서 아래 결과물을 얻고자 합니다.

 

  A1 A2 A3 A4 A5 합계
Q1
삼성 월렌트 대여개시 과정은 만족스러웠습니까?
3 0 0 1 0  
Q2
차량 반납 과정은 만족스러웠습니까?
1 1 1 0 1  
Q3 1 1 1 0 1  
Q4 2 2 0 0 0  
Q5 2 1 0 0 0  
Q6 1 2 0 1 0  
Q7 2 1 0 0 0  
Q8 4 0 0 0 0  

쿼리만으로 가능 할까요??????????

 

by 마농 [2016.12.01 13:52:46]

예시가 좀 복잡하고 알아보기 힘든데다가
각 테이블간의 연결고리가 정확하게 연결이 안되는듯 합니다.
survey_poll 에는 poll_id, poll_seq 이 존재하는데
cont_call 에는 poll_id 만 있고 poll_seq 가 없네요?
서로 어떻게 연결이 되는지?
결과예시는 적다가 말았고.


by 보일듯말듯 [2016.12.01 13:58:49]

cont_call 은 poll_seq 가 없습니다.

cont_call 은 기존에 있던 테이블이고, survey, 하고 survey_poll 테이블을 새로 만들었습니다.

cont_call (답변 저장용) 테이블을 그대로 사용해도 될것 같은 생각입니다.

그래서 poll_s_id 칼럼 추가하고

cont_call.poll_s_id = survey.poll_id  이렇게 보시면 됩니다.

결과 예시는 내용이 잘렸네요 .

SELECT poll_id , sum(decode(answer,'1',1,0)) a1,
     sum(decode(answer,'2',1,0)) a2,
     sum(decode(answer,'4',1,0)) a4,
     sum(decode(answer,'3',1,0)) a3,
     sum(decode(answer,'5',1,0)) a5
     FROM CONT_CALL 
     WHERE poll_s_id IS NOT NULL
     GROUP BY poll_id
         ORDER BY poll_id

이렇게 한거네 여기서 Q1 에 질문내용을 표시하고 싶습니다.


by 마농 [2016.12.01 14:06:01]

survey_poll 의 poll_id, poll_seq 2개를 알아야 질문내용을 가져 올 수 있을 것 같은데요?
survey_poll.poll_id  = cont_call.?
survey_poll.poll_seq = cont_call.?


그리고
동일한 컬럼명인데 사용처마다 다른 의미로 사용된다면?
개발자들은 큰 혼란에 빠지게 됩니다.
컬럼명칭을 통일할 필요가 있어 보입니다.


by 보일듯말듯 [2016.12.01 14:13:40]

survey_poll.poll_id  = cont_call.poll_s_id
survey_poll.poll_seq = cont_call.poll_id

이렇게 보면 될것 같습니다.
  


by 마농 [2016.12.01 14:25:41]

동일한 컬럼명인데 사용처마다 다른 의미로 사용된다면?
개발자들은 큰 혼란에 빠지게 됩니다.
컬럼명칭을 통일할 필요가 있어 보입니다.
아직 테이블이 확정된게 아니라면 통일감 있게 조정하길 권고합니다.
 

SELECT poll_s_id
     , poll_id
     , (SELECT content
          FROM survey_poll
         WHERE poll_id  = a.poll_s_id
           AND poll_seq = a.poll_id
           AND a_seq    = 0
        ) content
     , COUNT(DECODE(answer, 1, 1)) a1
     , COUNT(DECODE(answer, 2, 1)) a2
     , COUNT(DECODE(answer, 4, 1)) a4
     , COUNT(DECODE(answer, 3, 1)) a3
     , COUNT(DECODE(answer, 5, 1)) a5
  FROM cont_call a
 WHERE poll_s_id IS NOT NULL
 GROUP BY poll_s_id, poll_id
 ORDER BY poll_s_id, poll_id
;

 


by 보일듯말듯 [2016.12.01 14:44:02]

ㅡㅜ 제가 개발까지 같이 하고 있어서 기존에 있떤걸 수정하지 않고 최대한 그대로 사용하려 했습니다.  주의 하겠습니다.

select 칼럼명 표시에 select문을 쓸 수 있는지 처음 알았습니다.

조언 감사드립니다.

 

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