컬럼별 중복 갯수 구하기 0 2 1,648

by 조새롬 [2014.02.03 18:18:42]


 
SELECT CASE WHEN FIRST_VISIT_REF_URL like 'search.%' OR FIRST_VISIT_REF_URL like ' http://search.%' OR FIRST_VISIT_REF_URL like '%www.google.co.kr/search?%' THEN '검색엔진' 
WHEN FIRST_VISIT_REF_URL LIKE 'http://127.0.0.1%' OR FIRST_VISIT_REF_URL LIKE '127.0.0.1%' THEN '직접입력' 
WHEN FIRST_VISIT_REF_URL like '%mail2.daum.net%' --다음
OR FIRST_VISIT_REF_URL like '%mail.naver.com%' --네이버
OR FIRST_VISIT_REF_URL like '%mail.yahoo%' --야후
OR FIRST_VISIT_REF_URL like '%mail.dreamwiz%' --드림위즈
OR FIRST_VISIT_REF_URL like '%mail.korea%' --코리아닷컴
OR FIRST_VISIT_REF_URL like '%mail.lycos%' --라이코스
OR FIRST_VISIT_REF_URL like '%netian.com/mailview%' --네띠앙
OR FIRST_VISIT_REF_URL like '%kebi.com/mbody%' --깨비
OR FIRST_VISIT_REF_URL like '%mail.chol%' --천리안
OR FIRST_VISIT_REF_URL like '%mail.live.com%' --핫메일
OR FIRST_VISIT_REF_URL like '%mail.nate%' --네이트
OR FIRST_VISIT_REF_URL like '%gmail.google.com%' --구글
THEN '이메일'
ELSE '웹사이트' END AS REF_TYPE,
FIRST_VISIT_REF_URL AS URL,
ID_SESSION,
CASE WHEN (SELECT COUNT(ID_SESSION) FROM ci_visitor_actions b WHERE a.visit_time BETWEEN TO_DATE ( '2014/01/21' , 'YYYY/MM/DD' )
AND TO_DATE ( '2014/01/21' , 'YYYY/MM/DD' ) + 0.99999
AND a.id_site =1 AND a.id_session = b.id_session )=1 THEN '반송' ELSE 'X' END AS RETURN_CNT
FROM ci_visitor_info a
WHERE a.visit_time BETWEEN TO_DATE ( '2014/01/21' , 'YYYY/MM/DD' )
AND TO_DATE ( '2014/01/21' , 'YYYY/MM/DD' ) + 0.99999
AND a.id_site =1 AND a.visit_count!=1


쿼리의 결과는
REF_TYPE URL ID_SESSION RETURN_CNT
웹사이트 null 2a74a93eb425050ca685c9ae5925efa4 X
직접입력 http://127.0.0.1:8989/ci_log/main.jsp 5c6ef7ce5560c180d904998f0ef3da62 X
직접입력 http://127.0.0.1:8989/track_log/webBugTest2.jsp 293c98d02adbe7eb9da1f1d9204504e5 반송
원하는 결과는
웹사이트 1개 반송 0개
직접입력 2개 반송 1개

이렇게 REF_TYP 중복 갯수를 구하고 각 REF_TYPE 마다 RETURN_CNT가 '반송'인 것의 갯수를 구하는 것입니다.

도와주세요~
by 마농 [2014.02.03 19:08:27]
SELECT ref_type
     , COUNT(*) cnt
     , COUNT(return_cnt) return_cnt
  FROM (SELECT CASE WHEN first_visit_ref_url LIKE 'search.%'
                      OR first_visit_ref_url LIKE ' http://search.%'
                      OR first_visit_ref_url LIKE '%www.google.co.kr/search?%'
                    THEN '검색엔진'
                    WHEN first_visit_ref_url LIKE 'http://127.0.0.1%'
                      OR first_visit_ref_url LIKE '127.0.0.1%'
                    THEN '직접입력'
                    WHEN first_visit_ref_url LIKE '%mail2.daum.net%'      --다음
                      OR first_visit_ref_url LIKE '%mail.naver.com%'      --네이버
                      OR first_visit_ref_url LIKE '%mail.yahoo%'          --야후
                      OR first_visit_ref_url LIKE '%mail.dreamwiz%'       --드림위즈
                      OR first_visit_ref_url LIKE '%mail.korea%'          --코리아닷컴
                      OR first_visit_ref_url LIKE '%mail.lycos%'          --라이코스
                      OR first_visit_ref_url LIKE '%netian.com/mailview%' --네띠앙
                      OR first_visit_ref_url LIKE '%kebi.com/mbody%'      --깨비
                      OR first_visit_ref_url LIKE '%mail.chol%'           --천리안
                      OR first_visit_ref_url LIKE '%mail.live.com%'       --핫메일
                      OR first_visit_ref_url LIKE '%mail.nate%'           --네이트
                      OR first_visit_ref_url LIKE '%gmail.google.com%'    --구글
                    THEN '이메일'
                    ELSE '웹사이트' END AS ref_type
             , CASE WHEN (SELECT COUNT(*)
                            FROM ci_visitor_actions b
                           WHERE b.id_session = a.id_session
                          ) = 1
                    THEN '반송' END AS return_cnt
          FROM ci_visitor_info a
         WHERE a.visit_time BETWEEN TO_DATE ( '2014/01/21' , 'YYYY/MM/DD' )
                                AND TO_DATE ( '2014/01/21' , 'YYYY/MM/DD' ) + 0.99999
           AND a.id_site = 1
           AND a.visit_count != 1
        )
 GROUP BY ref_type
;

by 조새롬 [2014.02.04 09:28:47]


정말 감사합니다^^
많은 도움 주신 덕분에 저도 발전하고 있습니다
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입