본문 바로가기

데이터베이스/오라클

오라클 ROW_NUMBER() OVER PARTITION BY 를 이용한 중복제거

중복처리를 하는 여러가지 방법이 있지만 오라클의 ROW_NUMBER OVER PARTITION BY 를 이용하여 중복제거를 하는 방법을 자주 이용하였다.

중복되는 데이터가 많을 때 정렬을 하여 가져올 일이 있을 때 유용하게 사용하였다.

전화번호 중복을 제거하는데 최근에 등록된 전화번호 가져오기

SELECT *

FROM

(

SELECT 전화번호, 이름, 그외 가져오고 싶은 컬럼,

ROW_NUMBER() OVER(PARTITION BY 전화번호 ORDER BY 등록일자 DESC) AS SEQ

FROM [테이블명]

)

WHERE SEQ = 1;

이 방법을 응용하면 중복으로 저장된 데이터가 어떠한 것이 있는지도 알아낼 수 있다. WHERE절에 SEQ > 1 조건을 줘서 여러번 등록된 전화번호 검색 가능하다.