Count 내용 보기 0 7 1,976

by Lonnie [SQL Query] count [2016.08.08 17:35:00]


안녕하세요~

무더운 여름 잘 보내시고 계신가요? ^^

 

저는 아직 휴가를 안갔네요. ㅎㅎ

 

본론으로 들어가서...

 

각 테이블로부터 count한 내용을 비교한 값을 확인하였는데,

서로 상반된 값에 대해 그 내용을 알고 싶어서 문의 드립니다.

 

즉, A 테이블에 1024개 카운트(건수)를 확인하였고,

B 테이블에는 1020개 카운트(건수)를 확인하였습니다.

 

이 4개의 부합되지 않은 내용을 보고 싶은데, 어떻게 처리하여 화면상으로 볼 수 있을까요?

 

너무 간단한? 질문이기도 하고 어렵기도 해서 문의 드려봅니다.

 

그럼 고수님의 comment 부탁 드립니다.

by 겸댕2후니 [2016.08.08 17:47:31]
테이블이 크지 않다면 간단히,

select *
from table a
minus
select *
from table b

 


by 박영식 [2016.08.09 09:31:02]
SELECT *
  FROM A A
 WHERE NOT EXISTS ( 
                    SELECT 1
                      FROM B B
                     WHERE (B.키컬럼) = (A.키컬럼)
                  )

이방법도 가능할거같아요~


by Lonnie [2016.08.09 13:20:49]

select 1은 어떤 의미인지 알 수 있을까요?


by Lonnie [2016.08.09 13:20:25]

답변 감사합니다.

 

그러나, 카운트 된 갯수의 조사 결과가 두분이 제시한 내용에 따라 다르게 나타나네요?

 

게다가, 조회된 건수는 예를 들어 20건이 차이가 나는데, 분석 결과는 각기 22건과 159건으로 조회가 됩니다. ㅎㅎ

정확한 분석이 필요로 합니다만, 아~ 난감하네요. ㅋㅋ


by 포동푸우 [2016.08.09 17:22:07]

Lonnie 님 

"겸댕2후니" 님이 주신 Query 는

 - A 의 모든 data 중, B 에 존재하는 data 들을 빼고 조회하는 방법이니,

 - A table count 가 1020건, B table count 가 1000건 인 경우 

 - A minus B 가 22 건이면, A 와 B 의 998 건 (1020 - 22 = 998)  만 일치해서 일 겁니다.  (1000 건이 동일한 것이 아니라, 998 건만 동일) 

"박영식" 님이 주신 Query 는 

 - A 와 B 테이블에 PK 컬럼이 잘 설정된 경우에 차이를 정확하게 조회 하는 방법이니

 - 만약 159건 이나 조회 된다면,  A 와 B 테이블이 Key 컬럼을 기준으로 Data 가 잘 들어가 있는 상태가 아니여서 입니다. 

 

==> 정확한 분석? 은 Key 컬럼으로 Data 정합성이 충족되야 할 것 같구요., 원하시는 내용은 "겸댕2후니" 님 방법으로 찾으시는 게 현재는 더 나아 보입니다. 


by Lonnie [2016.08.10 09:57:49]

답변 고맙습니다.

결과 내용은 포동푸우님이 기재한 내용과 같이 저 또한 그렇게 예상하고 있었는데,

재확인 고맙습니다.

그러나, 각기 다른 사항은 단순 테이블 비교해서 그 차이나는 건수에 대해 말한거구요.

(테이블 확인 조건(컬럼)이 10개 이상이라 각 조회별로 나오는 건수 임)

박영식님이 제시해준 내용은 건수보다 테이블 내용도 병합되어 보여주고 있는 상태라

세부 내용을 더 보고 있는 상황입니다.

좋은 코멘트 고맙습니다.


by jkson [2016.08.10 10:09:32]
with t1 as
(
select '1' code, 'a' val from dual union all
select '2' code, 'b' val from dual union all
select '3' code, 'c' val from dual union all
select '4' code, 'd' val from dual union all
select '5' code, 'e' val from dual
)
, t2 as
(
select '3' code, 'k' val from dual union all
select '4' code, 'd' val from dual union all
select '5' code, 'e' val from dual union all
select '6' code, 'f' val from dual union all
select '7' code, 'g' val from dual
)
select t1.code code1, t1.val val1, t2.code code2, t2.val val2
  from t1 full outer join t2
    on (t1.code = t2.code and t1.val = t2.val)
 where nvl(t1.code,'*') != nvl(t2.code,'*')
   and nvl(t1.val,'*') != nvl(t2.val,'*')

일치해야하는 조건을 on 절과 where 절에 기술한 후 무엇이 다른지 검사해보세요.

 

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