(내용 수정)설문조사 쿼리 문 짜는 것 즘 도와주세요 ㅠㅠ 0 2 309

by 캔디는맛있어 [Tibero] 오라클 쿼리 설문조사 [2021.08.04 09:42:48]


설문조사.xlsx (13,579Bytes)

어제 글을 올렸는데 급하게 올려서 그런지 제가 빼먹은 것도 있어서 다시 올립니다.

A1 테이블은 구지 사용안해도?? 되지만??

A2,A3 테이블은 꼭 조인해서 사용했으면 합니다.

999는 기타입니다.

결과도 맨 하단에 추가했습니다.

혹시 몰라 엑셀로 첨부했으니 보기 힘드신 분들은 엑셀로 다운받아서 봐도 될듯합니다.

추가적으로 쿼리문에 대한 주석도 작성해주시면 감사하겠습니다. ^^

A1 테이블(설문조사 관리)   A2 테이블(설문 문항 테이블)   A3테이블(설문 답 체크 테이블)
필드명 SURVEY_NO QUESTION_NO ETC   필드명 SURVEY_NO QUESTION_NO SURVEY_QUESTIONS SURVEY_NAME   필드명 SURVEY_NO QUESTION_NO SURVEY_ANSWER ANSWER
설명 설문조사 번호 질문 번호 기타여부   설명 설문조사 번호 질문 번호 설문문항번호 설문문항내용   설명 설문조사 번호 질문 번호 질문 답 답변자
data 50 1 Y   data 50 1 1 매우좋음   data 50 1 1 홍길동
50 2 N   50 1 2 좋음   50 2 3 홍길동
50 3 N   50 1 3 보통   50 3 1|3 홍길동
50 4 Y   50 1 4 나쁨   50 4 1|3|5 홍길동
          50 1 5 매우나쁨   50 1 2 둘리
          50 2 1 매우좋음   50 2 4 둘리
          50 2 2 좋음   50 3 1|2|3 둘리
          50 2 3 보통   50 4 1|2|3|4 둘리
          50 2 4 나쁨   50 1 999 또치
          50 2 5 매우나쁨   50 2 5 또치
          50 3 1 빌라   50 3 1|2 또치
          50 3 2 원룸   50 4 3|5|999 또치
          50 3 3 아파트            
          50 3 4 투룸            
          50 3 5 빌딩            
          50 4 1 자짱면            
          50 4 2 짬뽕            
          50 4 3 탕수육            
          50 4 4 볶음밥            
          50 4 5 라면            

 

1번 질문의 결과   2번 질문의 결과
설문조사번호 질문 번호 설문문항번호 설문문항내용 답변 수   설문조사번호 질문 번호 설문문항번호 설문문항내용 답변 수
50 1 1 매우좋음 1   50 2 1 매우좋음 0
50 1 2 좋음 1   50 2 2 좋음 0
50 1 3 보통 0   50 2 3 보통 1
50 1 4 나쁨 0   50 2 4 나쁨 1
50 1 5 매우나쁨 0   50 2 5 매우나쁨 1
50 1 999 기타 1            
                     
                     
3번 질문의 결과   4번 질문의 결과
설문조사번호 질문 번호 설문문항번호 설문문항내용 답변 수   설문조사번호 질문 번호 설문문항번호 설문문항내용 답변 수
50 3 1 빌라 3   50 4 1 자짱면 2
50 3 2 원룸 1   50 4 2 짬뽕 1
50 3 3 아파트 3   50 4 3 탕수육 3
50 3 4 투룸 0   50 4 4 볶음밥 1
50 3 5 빌딩 0   50 4 5 라면 2
            50 4 기타(999)   1

 

by 마농 [2021.08.04 10:11:39]
WITH a1 AS
(
SELECT 50 survey_no, 1 question_no, 'Y' etc FROM dual
UNION ALL SELECT 50, 2, 'N' FROM dual
UNION ALL SELECT 50, 3, 'N' FROM dual
UNION ALL SELECT 50, 4, 'Y' FROM dual
)
, a2 AS
(
SELECT 50 survey_no, 1 question_no, 1 survey_questions, '매우좋음' survey_name FROM dual
UNION ALL SELECT 50, 1, 2, '좋음'     FROM dual
UNION ALL SELECT 50, 1, 3, '보통'     FROM dual
UNION ALL SELECT 50, 1, 4, '나쁨'     FROM dual
UNION ALL SELECT 50, 1, 5, '매우나쁨' FROM dual
UNION ALL SELECT 50, 2, 1, '매우좋음' FROM dual
UNION ALL SELECT 50, 2, 2, '좋음'     FROM dual
UNION ALL SELECT 50, 2, 3, '보통'     FROM dual
UNION ALL SELECT 50, 2, 4, '나쁨'     FROM dual
UNION ALL SELECT 50, 2, 5, '매우나쁨' FROM dual
UNION ALL SELECT 50, 3, 1, '빌라'     FROM dual
UNION ALL SELECT 50, 3, 2, '원룸'     FROM dual
UNION ALL SELECT 50, 3, 3, '아파트'   FROM dual
UNION ALL SELECT 50, 3, 4, '투룸'     FROM dual
UNION ALL SELECT 50, 3, 5, '빌딩'     FROM dual
UNION ALL SELECT 50, 4, 1, '자짱면'   FROM dual
UNION ALL SELECT 50, 4, 2, '짬뽕'     FROM dual
UNION ALL SELECT 50, 4, 3, '탕수육'   FROM dual
UNION ALL SELECT 50, 4, 4, '볶음밥'   FROM dual
UNION ALL SELECT 50, 4, 5, '라면'     FROM dual
)
, a3 AS
(
SELECT 50 survey_no, 1 question_no, '1' survey_answer, '홍길동' answer FROM dual
UNION ALL SELECT 50, 2, '3'      , '홍길동' FROM dual
UNION ALL SELECT 50, 3, '1|3'    , '홍길동' FROM dual
UNION ALL SELECT 50, 4, '1|3|5'  , '홍길동' FROM dual
UNION ALL SELECT 50, 1, '2'      , '둘리'   FROM dual
UNION ALL SELECT 50, 2, '4'      , '둘리'   FROM dual
UNION ALL SELECT 50, 3, '1|2|3'  , '둘리'   FROM dual
UNION ALL SELECT 50, 4, '1|2|3|4', '둘리'   FROM dual
UNION ALL SELECT 50, 1, '999'    , '또치'   FROM dual
UNION ALL SELECT 50, 2, '5'      , '또치'   FROM dual
UNION ALL SELECT 50, 3, '1|2'    , '또치'   FROM dual
UNION ALL SELECT 50, 4, '3|5|999', '또치'   FROM dual
)
SELECT a0.survey_no, a0.question_no, a0.survey_questions, a0.survey_name
     , COUNT(a3.survey_answer) survey_answer_cnt  -- 답변 카운트
  FROM (-- a2 의 항목에 a1 이 기타인 경우 999 추가
        SELECT survey_no, question_no, survey_questions, survey_name
          FROM a2
         UNION ALL
        SELECT survey_no, question_no, 999 survey_questions, '기타' survey_name
          FROM a1
         WHERE etc = 'Y'
        ) a0
  LEFT OUTER JOIN a3  -- a3 와 아우터 조인
    ON a0.survey_no   = a3.survey_no
   AND a0.question_no = a3.question_no
   AND INSTR('|'||a3.survey_answer||'|', '|'||a0.survey_questions||'|') > 0  -- 문항 번호 있는지?
 WHERE a0.survey_no = 50   -- 설문번호 조건
-- AND a0.question_no = 2  -- 질문번호 조건
 GROUP BY a0.survey_no, a0.question_no, a0.survey_questions, a0.survey_name  -- 그룹핑
 ORDER BY a0.survey_no, a0.question_no, a0.survey_questions                  -- 정렬
;

 


by 캔디는맛있어 [2021.08.04 11:33:16]

정말 감사합니다. ^^ 삭제하려고 했는데 벌써 답변을 달아 주셨네요 감사합니다.^^b

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