[Oracle] 오라클 중복 데이터를 찾는 2가지 방법
- 데이터베이스/오라클
- 2022. 4. 6.
오라클에서 중복 데이터를 추출하거나 찾기 위해서는 GROUP BY 절과 집계 함수를 사용하거나, OVER 절과 분석함수를 사용하는 방법이 있다. GROUP BY 절을 사용할 경우 중복 칼럼에 대한 건수만 조회 가능하고, 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 절과 함께 사용하면 분석함수이다.