[Oracle] 데이터 중복 제거 방법 (DISTINCT, GROUP BY)
- 데이터베이스/오라클
- 2019. 5. 7.
오라클에서 데이터 조회 시 데이터 중복을 제거하기 위해서는 대표적으로 2가지 방법이 있다. DISTINCT 키워드를 사용하여 중복을 제거하는 방법과, GROUP BY 절을 사용하여 데이터 중복을 제거하는 방법이다.
오라클 쿼리문에서 데이터의 중복을 제거할 때는 DISTINCT 키워드를 사용할 것을 권장한다. DISTINCT를 사용하면 쿼리문을 분석할 때 중복을 제거한 결과가 반환된다는 것을 직관적으로 파악이 가능하다. 그러나 상황에 따라서 GROUP BY 절을 사용하여 중복을 제거할 수도 있다.
DISTINCT를 사용하여 중복 제거
SELECT DISTINCT
a.deptno
, b.dname
FROM emp a
, dept b
WHERE a.deptno = b.deptno
AND a.sal > 1500
DISTINCT 키워드를 사용하여 데이터 중복을 제거할 때는 SELECT 절에 DISTINCT 키워드만 명시하면 되므로 쿼리문이 복잡하지 않고 간결하다. 그러나 DISTINCT 키워드를 사용하면 temp tablespace에 임시로 저장하고 작업하는 방식이라서 시스템에 조금 부하가 발생할 수도 있다.
GROUP BY 절을 사용하여 중복 제거
SELECT a.deptno
, b.dname
FROM emp a
, dept b
WHERE a.deptno = b.deptno
AND a.sal > 1500
GROUP BY a.deptno, b.dname
GROUP BY 절을 사용하여 데이터 중복을 제거할 때는 SELECT 절의 칼럼을 GROUP BY절에도 동일하게 명시해야 하는 하므로 쿼리문이 조금 더 길어질 수 있다. DISTINCT에 비하여 조금 더 성능이 좋다고 하지만, 크게 체감은 되지는 않는다. Oracle 10g R2부터는 GROUP BY 절을 사용해도 결과가 자동으로 정렬 되지 않는다.