본문 바로가기
Database

오라클 DISTINCT를 사용한 중복 데이터 제거

by 굿센스굿 2024. 12. 3.
반응형


데이터베이스를 관리하다 보면 중복 데이터가 발생하는 경우가 종종 있습니다. 특히 대량의 데이터를 다룰 때 중복 데이터는 쿼리 성능을 저하시킬 뿐 아니라, 분석 결과의 정확성을 떨어뜨리는 주요 원인 중 하나입니다. 이를 해결하기 위해 DISTINCT 키워드를 사용하여 간단하고 효과적으로 중복 데이터를 제거할 수 있습니다. 이번 포스팅에서는 DISTINCT의 기본 개념과 사용법, 그리고 실무에서 자주 접할 수 있는 예시들을 통해 그 활용법을 살펴보겠습니다.


1. DISTINCT란 무엇인가?

DISTINCT는 SQL에서 중복된 값을 제거하고 고유한 값만 반환하는 키워드입니다. SELECT 문과 함께 사용되며, 특정 컬럼의 중복 데이터를 제거하여 유일한 결과를 얻을 수 있습니다.

다음은 기본적인 문법입니다:

SELECT DISTINCT column_name
FROM table_name;

이 쿼리는 table_name에서 column_name에 포함된 중복 값을 제거하고, 고유한 값만 반환합니다.


2. DISTINCT의 기본 사용법

DISTINCT는 단일 컬럼뿐만 아니라 여러 컬럼에도 적용할 수 있습니다. 이를 통해 특정 컬럼 조합의 중복 데이터를 제거할 수 있습니다.

예제 1: 단일 컬럼의 중복 제거

SELECT DISTINCT department
FROM employees;

위 쿼리는 employees 테이블에서 department 컬럼에 저장된 고유한 부서명을 반환합니다.

예제 2: 여러 컬럼의 조합에서 중복 제거

SELECT DISTINCT department, job_title
FROM employees;

이 경우, department와 job_title의 조합이 중복되지 않는 고유한 값만 반환됩니다.


3. 실무 예제: DISTINCT 활용하기

예제 3: 고객의 국가별 고유 리스트 가져오기
회사가 보유한 고객 데이터를 분석할 때, 고객이 거주하는 국가 목록이 필요하다고 가정해 봅시다.

SELECT DISTINCT country
FROM customers;

이 쿼리는 customers 테이블에서 중복된 국가명을 제거하고, 고객이 거주하는 모든 고유 국가를 반환합니다.

예제 4: 특정 조건과 함께 사용하기
DISTINCT는 WHERE 절과 함께 사용하여 특정 조건에 맞는 데이터에서 고유 값을 추출할 수도 있습니다.

SELECT DISTINCT product_name
FROM orders
WHERE order_date >= '2024-01-01';

위 쿼리는 2024년 1월 1일 이후에 주문된 제품명 중 중복되지 않는 고유한 목록을 반환합니다.

예제 5: COUNT와 함께 중복된 데이터의 개수 확인
DISTINCT를 활용하여 중복 제거 후 데이터의 개수를 계산할 수 있습니다.

SELECT COUNT(DISTINCT customer_id) AS unique_customers
FROM orders;

이 쿼리는 orders 테이블에서 중복되지 않는 고유한 고객 ID의 수를 반환합니다.


4. DISTINCT 사용 시 주의사항

  1. 정렬 순서와 관련성
    DISTINCT는 고유 데이터를 반환하기 전에 내부적으로 데이터를 정렬합니다. 따라서, 데이터가 방대한 경우 성능 문제가 발생할 수 있습니다. 이 경우, 인덱스를 활용하거나 쿼리 최적화 기법을 적용하는 것이 좋습니다.
  2. NULL 값 처리
    DISTINCT는 NULL 값을 하나의 고유한 값으로 간주합니다. 예를 들어, 여러 개의 NULL 값이 있더라도 결과에는 한 번만 표시됩니다.
  3. 대체 방법 고려
    경우에 따라 DISTINCT 대신 GROUP BY를 사용하면 성능이 더 나은 경우가 있습니다. 특히, 집계 함수와 함께 사용할 때 유용합니다.
  4. SELECT department, COUNT(*) FROM employees GROUP BY department;

5. 결론

DISTINCT는 간단하지만 강력한 도구로, 중복 데이터를 제거하여 분석 결과의 신뢰성을 높이는 데 유용합니다. 그러나 데이터 규모와 쿼리 성능을 고려하여 신중하게 사용하는 것이 중요합니다.
실무에서 자주 사용되는 DISTINCT 활용법을 잘 이해하고, 상황에 맞는 쿼리 작성으로 효율적인 데이터 처리를 실현해 보세요!

반응형