[Oracle] 오라클 중복데이터 조회 방법(쿼리첨부)

안녕하세요. 오늘은 오라클 중복데이터를 찾는 방법을 알아보겠습니다.

 

실무를 하다보면 중복된 값을 찾아야 하는 경우가 자주 생깁니다.

실무자들이 요구하는 특정데이터를 찾는 경우, 또는 잘못된 데이터를 찾아야 하는경우 등등.

이럴경우에는 그룹함수를 사용하여 중복된 데이터를 찾으면 됩니다.

 

오라클 그룹함수 : GROUP BY, HAVING, PARTITION BY

1. 중복 조회를 할 컬럼을 GROUP BY로 그룹핑 후 HAVING 조건에 COUNT 1이상인 것을 조회

2. 분석함수(PARTITION BY)를 사용하여 조회

 

테스트를 위해 SAMPLE 데이터를 준비하였습니다.

아래 SAMPLE 테이블에는 TV와 휴대폰이 중복데이터로 있습니다.

중복된 TV와 휴대폰을 찾아보겠습니다.

 

1. GROUP BY HAVING 을 사용하여 중복데이터 조회

- 중복데이터를 찾을 컬럼(goods_nm)

- count(*)는 그룹화된 goods_nm 의 갯수를 의미

SELECT goods_nm, count(*) 
FROM TEMP01018
GROUP BY goods_nm
HAVING count(*) > 1;

실행결과

- TV와 휴대폰의 중복된 데이터의 갯수를 확인

만약 중복된 데이터의 goods_cnt의 합을 구하고 싶으면 이렇게 사용하면 됩니다.

- GOODS_CNT를 sum 함수로 사용하면 됩니다.

SELECT goods_nm, SUM(GOODS_CNT) 
FROM TEMP01018
GROUP BY goods_nm
HAVING count(*) > 1;

실행결과

 

2. 분석함수 PARTITION BY 를 이용하여 중복데이터 조회

   SELECT DISTINCT T1.*
  FROM (
        SELECT a.goods_nm
              , COUNT(*) OVER(PARTITION BY a.goods_nm) AS goodsCnt
         FROM TEMP01018 a
       ) T1
  WHERE T1.goodsCnt > 1 ;

실행결과

 

댓글

Designed by JB FACTORY