개발 & 데이터베이스/DB

오라클 중복 데이터 쉽고 빠르게 찾는 방법 (GROUP BY, OVER)

K.두부 2022. 8. 18. 21:41
반응형

안녕하세요. 프로그래머 두부입니다.

일을 하다보면 중복 데이터를 찾아야하는 경우가 생기는데요. 쉽고 빠르게 찾을 수 있는 방법이 없을까요?

오라클에서는 중복 데이터를 찾기 위해서 GROUP BY 절과 집계 함수를 이용하는 방법과 OVER 절과 분석 함수를 이용하는 방법 총 2가지가 있습니다. 지금부터 어떻게 사용하는 것인지 알아보겠습니다.

 

1. 집계 함수를 이용하는 방법 (GROUP BY 절)

2. 분석 함수를 이용하는 방법 (OVER 절)

위의 예시 데이터에서 HIREDATE 컬럼이 중복된 데이터를 찾아보겠습니다.

 

 

집계 함수를 이용하는 방법 (GROUP BY 절)

SELECT HIREDATE
     , COUNT(*) AS CNT
  FROM JOB_TABLE
GROUP BY HIREDATE 
  HAVING COUNT(*) > 1

GROUP BY 절과 집계 함수를 이용해서 2건 이상의 중복된 데이터 (HAVING COUNT(*) > 1) 을 찾는 쿼리입니다. 위의 쿼리를 사용하면 중복 칼럼과 중복 건수만 조회되기 때문에 세부 칼럼의 정보를 확인하기 위해서는 OVER 절을 이용해야합니다.

 

분석 함수를 이용하는 방법 (OVER 절)

SELECT A.*
  FROM (
        SELECT EMPNO
             , ENAME
             , HIREDATE
             , PHONE
             , COUNT(*) OVER(PARTITION BY HIREDATE) AS CNT
          FROM JOB_TABLE
        ) A
 WHERE A.CNT > 1

GROUP BY 절을 사용했을 때와 결과값이 다른 것처럼 보이지만 자세히 보면 둘 다 5개의 중복된 데이터를 가지고 있습니다. (22년 1월 4일 : 2개, 22년 5월 4일 : 3개) OVER 절과 분석 함수를 이용하게 되면 모든 칼람을 조회할 수 있습니다. 

반응형