오라클 중복 데이터 제거 방법 (distinct, group by)
안녕하세요. DB 쿼리를 SELECT Query를 짜다보면 데이터 중복을 제거해야 할 때가 종종 있습니다.
오라클에서 데이터 조회 시 중복을 제거하기 위해서는 대표적으로 2가지 방법이 있습니다.
distinct 키워드
를 사용하는 방법과, group by 절
을 사용하여 데이터 중복을 제거하는 방법이 있습니다.
오늘은 위 두개의 사용법을 포스팅하도록 하겠습니다.👀
💡 DISTINCT 를 활용한 중복데이터 제거
distinct키워드를 사용하여 중복을 제거하면 select 절에 distinct키워드만 명시하면 되기 때문에 쿼리가 복잡하지 않고 간결하다.
하지만 distinct의 경우는 temp tablespace에 임시로 저장하고 작업하는 방식이기 때문에 시스템에 부하를 줄 수 있는 단점이 있다.
📌 기본 SELECT 절 (중복제거 X) - 예제에 활용할 테이블 SELECT
SELECT * FROM DEPARTMENTSTORE01;
현재 DEPARTMENTSTORE01 테이블의 데이터입니다.
📌 distinct를 사용하여 중복제거한 SELECT 절
1. 백화점 명 중복제거 하여 출력 (단일 distinct)
--> distinct 컬럼명1 : 컬럼명1의 중복값을 제거한 행을 SELECT(총 2행)
2. 여러개 칼럼 distinct
--> distinct 컬렴명1, 컬렴명2 : 컬럼명1과 컬럼명2의 조합에 대한 유일한 값을 SELECT (총 10행)
위 데이터에서는 DEPT_NM과 DEPT_STORE의 조합에 대한 중복이 존재하지 않기 때문에
SELECT DEPT_NM, DEPT_STORE FROM DEPARTMENTSTORE01; 과 같은 결과가 출력됨
3. COUNT(DISTINCT)
--> COUNT(DISTINCT 컬럼명) : 컬럼명의 중복을 제거한 행의 개수 SELECT
이 외에도 다양한 부분에서 DISTINCT를 이용하여 중복제거를 하여 처리할 수 있습니다. 이처럼 데이터가 적고 간단한 쿼리문은 DISTINCT를 사용하고 데이터가 많고 시스템의 부하를 줄 수 있는 쿼리문은 GROUP BY절을 이용하는 것도 좋은 방법일 듯 싶습니다. 일반적인 데이터의 조회의 경우엔 어느 방법을 사용하든 조회 속도는 비슷합니다.
💡 GROUP BY 를 활용한 중복데이터 제거
GROUP BY절을 이용하여 데이터 중복을 제거할 때는 SELECT절의 칼럼을 GROUP BY절에도 동일하게 명시를 해야하는 부담감이 있지만 DISTINCT에 비하여 조금 빠른감이 있습니다.
ORACLE 10g R2부터는 GROUP BY 사용 시 정렬(sort)이 기본으로 되지 않으므로 속도도 더 빨라졌습니다.
📌 기본 SELECT 절 (중복제거 X) - 예제에 활용할 테이블 SELECT
SELECT * FROM DEPARTMENTSTORE01;
현재 DEPARTMENTSTORE01 테이블의 데이터입니다.
📌 GROUP BY를 사용하여 중복제거한 SELECT절
1. 단일 GROUP BY (DEPT_NM 중복제거)
--> GROUP BY 컬럼명1 : 컬럼명1의 값으로 그룹을 지은 것(중복 제거)
위에 DISTINCT예제 1번인 SELECT DISTINCT DEPT_NM FROM DEPARTMENTSTORE01; 와 SELECT하는 결과는 같지만
DISTINCT는 중복을 제거한 결과를 반환하는 것이고, GROUP BY는 백화점 별로 그룹을 지은 것임을 알아두자
GROUP BY를 다양히 사용하기에 적절한 데이터가 아닌 것 같아서 GROUP BY 다양한 예제는 추후 업데이트 또는 재포스팅하도록 하겠습니다. 감사합니다.
'DB & SQL' 카테고리의 다른 글
[MariaDB] 윈도우 MariaDB 설치/접속 (1) | 2022.10.04 |
---|---|
[MySQL] 현재 데이터베이스 조회 및 변경 (0) | 2022.07.02 |
[Oracle] 오라클 DECODE 개념 및 사용예제 (if else 조건문 - 디코드) (0) | 2021.07.22 |
[ORACLE] SELECT문 합치기 - UNION & UNION ALL 개념 및 사용법 (0) | 2021.07.07 |
SQL Error [1054] [42S22]: Unknown column 'SYSDATE' in 'field list' 해결 방법 (1) | 2021.04.27 |