데이터베이스 개발자 질문과 답변 게시판
안녕하세요..
제가 MS와 ORACLE DB를 같이 운영중이여서 일단 오라클 SQL로 글을 작성해서 죄송합니다.
운영상 통계를 뽑을 일이 있어 나름 SQL을 작성하여 건수 확인을 하고 있는데..
아래 1번 조건으로 조회한 결과가 100만 건 인데 제 생각으로는 2번 3번의 조회 조건 결과가
1번의 합과 동일해야 한다고 생각하는데 값이 이상하게 다르게 나오는데~
1번의 같은 테이블에서 조회한 결과이고 , 2번과 3번의 경우 다른 테이블에서 INNER JOIN을 통해 값을 가지고 오고 있습니다.
조건에 특이사항이 있냐 없냐가 조건인데 값이 다른이유가 뭘까요;;;;
== 아 래 ==
1. 2018년 1월 1일 00시 전에 만들어진 고객수 중 제품키가 없고 이름이 AGENT,UNKNOWN 인 고객의 수
가. TABLE : TABLE_CUS
select count(*) from TABLE_CUS where CREATION_DATE < '2018-01-01 00:00:00' and Product_code is null
and REGEXP_LIKE(UPPER(CUS_NAME), 'AGENT|UNKNOWN')
-> 약 100만건
2. 2018년 1월 1일 00시 전에 만들어진 고객수 중 제품키가 없고 이름이 AGENT,UNKNOWN 인 고객 중 특이사항이 없는 고객
가. TABLE : TABLE_CUS, TABLE_ACT
select COUNT(DISTINCT CUS_NO) from TABLE_ACT A join
(select DISTINCT CUS_ID from TABLE_CUS where CREATION_DATE < '2018-01-01 00:00:00'
and Product_code is null and REGEXP_LIKE(UPPER(CUS_NAME), 'AGENT|UNKNOWN')) B on A.CUS_NO=B.CUS_ID
where CUS_CONTENTS is not null and LENGTH(CUS_NO) > 14
-> 약 50만건
2. 2018년 1월 1일 00시 전에 만들어진 고객수 중 제품키가 없고 이름이 AGENT,UNKNOWN 인 고객 중 특이사항이 있는 고객
가. TABLE : TABLE_CUS, TABLE_ACT
select COUNT(DISTINCT CUS_NO) from TABLE_ACT A join
(select DISTINCT CUS_ID from TABLE_CUS where CREATION_DATE < '2018-01-01 00:00:00'
and Product_code is null and REGEXP_LIKE(UPPER(CUS_NAME), 'AGENT|UNKNOWN')) B on A.CUS_NO=B.CUS_ID
where CUS_CONTENTS is null and LENGTH(CUS_NO) > 14
-> 약 70만건
1번 조건에 조인도 동일하게 넣으시고 LENGTH(CUS_NO) > 14 들어가야 기본 자료가 됩니다.