반응형
안녕하세요. 프로그래머 두부입니다.
일을 하다보면 중복 데이터를 찾아야하는 경우가 생기는데요. 쉽고 빠르게 찾을 수 있는 방법이 없을까요?
오라클에서는 중복 데이터를 찾기 위해서 GROUP BY 절과 집계 함수를 이용하는 방법과 OVER 절과 분석 함수를 이용하는 방법 총 2가지가 있습니다. 지금부터 어떻게 사용하는 것인지 알아보겠습니다.
위의 예시 데이터에서 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 절과 분석 함수를 이용하게 되면 모든 칼람을 조회할 수 있습니다.
반응형
'개발 & 데이터베이스 > DB' 카테고리의 다른 글
오라클 디비링크 (DB LINK) 정의 및 생성 권한 부여 (0) | 2022.08.20 |
---|---|
오라클 해당 날짜 요일 구하기 (TO_CHAR 함수) (0) | 2022.08.20 |
오라클 간단하고 짧은 조건함수 DECODE 함수 사용 방법 (0) | 2022.03.14 |
오라클 ORA-28001: 비밀번호가 만기되었습니다. 오류 해결 방법 (0) | 2022.03.04 |
오라클 결과값을 버림하여 출력하는 TRUNC 함수 (0) | 2022.02.23 |