중복처리를 하는 여러가지 방법이 있지만 오라클의 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 조건을 줘서 여러번 등록된 전화번호 검색 가능하다.