안녕하세요..
제가 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 들어가야 기본 자료가 됩니다.