오라클에서 데이터를 조회할 때 같은 값을 가진 데이터의 중복을 제거하기 위해서는 2가지 방법을 사용할 수 있다.
1. DISTINCT 사용
2. GROUP BY 절 사용
1. DISTINCT 를 사용한 중복 제거
오라클 쿼리문에서 데이터 중복을 제거할 때는 DISTINCT 키워드를 사용할 것을 권장한다고 한다.
DISTINCT 키워드를 사용하면 SELECT 절에 DISTINCT 키워드만 명시하면 되므로 쿼리문이 간결해진다.
하지만 이 경우에는 temp tablespace(임시 테이블 스페이스)에 임시로 저장하고 작업하는 방식이라 시스템에 부하가 발생할 수도 있다.
형식)
SELECT DISTINCT 중복 제거해 나타낼 컬럼명
FROM 테이블명
WHERE 조건
예시)
또한, 중복을 제거하여 카운트를 할 경우에는 이런식으로 쓰면된다.
아래는 이 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에 비해 조금 더 성능이 좋다고 하지만 크게 체감이 되지는 않는다고 한다.
참고
'DB > Oracle' 카테고리의 다른 글
[Oracle] 임시테이블 만들기 / WITH절 (0) | 2023.11.06 |
---|---|
[Oracle] SELECT 결과 상위 N개만 검색 / FETCH FIRST N ROWS ONLY (0) | 2023.11.05 |
[Oracle] GROUP BY / HAVING 절 (0) | 2023.10.15 |
[Oracle] 반올림, 버림(절사) / ROUND 함수, TRUNC 함수 (0) | 2023.10.12 |
[Oracle] 날짜정보 추출 함수 / EXTRACT (0) | 2023.10.12 |