[Oracle] 오라클 중복 데이터를 찾는 2가지 방법

오라클에서 중복 데이터를 추출하거나 찾기 위해서는 GROUP BY 절과 집계 함수를 사용하거나, OVER 절과 분석함수를 사용하는 방법이 있다. GROUP BY 절을 사용할 경우 중복 칼럼에 대한 건수만 조회 가능하고, OVER 절을 사용하면 중복 칼럼을 포함하여 전체 칼럼을 조회할 수 있다.

 

목차
  1. 집계함수를 사용하는 방법 (GROUP BY 절)
  2. 분석함수를 사용하는 방법 (OVER 절)

 

아래의 예제는 job, deptno가 중복(2건 이상)되는 데이터를 찾는 예제이다.

 

오라클 중복 데이터 찾기

 

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

SELECT job
     , deptno
     , COUNT(*) AS cnt
  FROM emp
 GROUP BY job, deptno HAVING COUNT(*) > 1

 

 

GROUP BY 절과 집계함수를 사용하여 2건 이상(HAVING COUNT(*) >1)의 데이터를 찾는 쿼리이다.

위의 쿼리를 사용하면 중복 칼럼과 중복 건수만 조회되기 때문에 세부 칼럼의 정보를 확인하기 위해서는 job, deptno 칼럼으로 다시 한번 조회를 해야 한다.

 

job, deptno가 중복된 데이터는 총 8건이 조회되었다.

 

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

SELECT a.*
  FROM (
         SELECT empno
              , ename
              , hiredate
              , job
              , deptno
              , COUNT(*) OVER(PARTITION BY job, deptno) AS cnt
           FROM emp
       ) a
 WHERE a.cnt > 1

 

 

OVER 절과 분석함수를 사용하면 중복된 데이터를 조회 시 원하는 모든 칼럼을 같이 조회할 수 있다.

중복 건수(a.cnt > 1)가 있는 모든 데이터를 조회한다. 조회된 데이터의 행 건수가 중복 건수다.

 

COUNT 함수가 GROUP BY 절과 함께 사용하면 집계 함수이며, OVER 절과 함께 사용하면 분석함수이다.

예제쿼리(테이블포함).txt
0.00MB

 

[Oracle] PARTITION BY 사용법 (분석함수)

오라클에서 분석함수를 사용할 때 PARTITION BY를 사용하여 그룹으로 묶어서 연산을 할 수 있다. GROUP BY 절을 사용하지 않고, 조회된 각 행에 그룹으로 집계된 값을 표시할 때 OVER 절과 함께 PARTITION B

gent.tistory.com

 

[Oracle] 중복 데이터 하나만 남기고 제거 2가지 방법

오라클에서 조회된 데이터에서 특정 칼럼을 기준으로 하나의 행만 조회해야 하는 경우가 있다. 중복된 칼럼의 데이터에서 그룹별로 최신의 행 하나만 가져오거나, 특정 칼럼으로 정렬하여 최상

gent.tistory.com

 

[Oracle] 오라클 INSERT 할 때 중복 제외하는 방법

오라클에서 INSERT 할 때 PK가 중복되어서 오류가 발생하는 경우가 많다. 이럴 경우 중복을 무시하거나 중복을 제외하고 INSERT를 하거나, 미리 중복을 체크하여 INSERT가 되지 않도록 해야 한다. ORA-00

gent.tistory.com

 

댓글

Designed by JB FACTORY