본문 바로가기
DB/Oracle

[Oracle] 데이터 중복 제거 / DISTINCT, GROUP BY

by 키튼햄 2023. 10. 21.

오라클에서 데이터를 조회할 때 같은 값을 가진 데이터의 중복을 제거하기 위해서는 2가지 방법을 사용할 수 있다.

 

1. DISTINCT 사용

2. GROUP BY 절 사용

 

 

1. DISTINCT 를 사용한 중복 제거

오라클 쿼리문에서 데이터 중복을 제거할 때는 DISTINCT 키워드를 사용할 것을 권장한다고 한다.

DISTINCT 키워드를 사용하면 SELECT 절에 DISTINCT 키워드만 명시하면 되므로 쿼리문이 간결해진다.

하지만 이 경우에는 temp tablespace(임시 테이블 스페이스)에 임시로 저장하고 작업하는 방식이라 시스템에 부하가 발생할 수도 있다.

 

형식)

SELECT  DISTINCT  중복 제거해 나타낼 컬럼명

FROM  테이블명

WHERE  조건

 

 

 

예시) 

출처 : https://gent.tistory.com/222

 

 

또한, 중복을 제거하여 카운트를 할 경우에는 이런식으로 쓰면된다.

아래는 이 NAME이 NULL인 경우를 집계하지 않으면서 중복되는 NAME값은 하나로 생각하여(데이터 중복을 제거한 것) NAME의 개수를 COUNT 하는 SQL 쿼리문이다.

([프로그래머스] 59408. 중복 제거하기)

SELECT count(DISTINCT NAME) AS count
FROM ANIMAL_INS 
WHERE NAME IS NOT NULL

 

 

 

2. GROUP BY 절을 이용한 중복 제거

GROUP BY 절을 사용하여 데이터 중복을 제거할 때는 SELECT 절의 칼럼을 GROUP BY절에도 동일하게 명시해야 하기때문에 쿼리문이 조금 더 길어질 수 있다. DISTINCT에 비해 조금 더 성능이 좋다고 하지만 크게 체감이 되지는 않는다고 한다. 

 

출처 : https://gent.tistory.com/222

 

 


참고