기술블로그

📌 Sql에서 Distinct의 역할과 활용 방법

Chansman 2025. 3. 25. 19:28

 

📌 DISTINCT의 역할과 설명

DISTINCT는 SQL에서 중복된 값을 제거하고 고유한 값만 반환하기 위해 사용됩니다. 주로 SELECT 구문에서 활용되며, 결과 집합에서 중복된 데이터를 제외하고 고유한 데이터만 반환하도록 합니다. 이 기능을 사용하면 데이터의 중복을 방지하고 더 깔끔한 결과를 얻을 수 있습니다. 😄


🚦 DISTINCT의 역할

DISTINCT같은 값을 가진 행을 하나로 합쳐 고유한 값만 결과로 반환하는 역할을 합니다. 예를 들어, 특정 컬럼에서 중복된 값을 제외하고 유일한 값만 얻고 싶을 때 사용합니다.

📌 예시 1: DISTINCT를 사용한 컬럼값 필터링

SELECT DISTINCT author FROM books;

설명: 이 쿼리는 books 테이블에서 author 컬럼의 고유한 값만 반환합니다. 만약 author에 중복된 작가가 있다면, 하나의 작가 이름만 결과로 출력됩니다.

예시 결과:

author

김종원
이순신
한강

이처럼 DISTINCT를 사용하면, 중복된 작가가 있을 경우 각 작가는 한 번만 반환됩니다. 😊

📌 DISTINCT와 COUNT의 결합 예시

SELECT author, COUNT(DISTINCT title) AS num_books
FROM books
GROUP BY author;

설명: 이 쿼리는 books 테이블에서 각 **작가(author)**가 출판한 책의 수를 계산하는 쿼리입니다. COUNT(DISTINCT title)을 사용하여 중복된 책 제목을 제외하고, 고유한 책 제목만 셉니다.

예시 결과:

author num_books

김종원 3
이순신 2
한강 5

**COUNT(DISTINCT title)**는 각 작가가 쓴 중복되지 않는 책 제목의 수를 셉니다. 예를 들어, 작가 '김종원'이 세 권의 책을 썼는데 그 중 일부 제목이 중복되었다면, DISTINCT가 그 중복을 제거하고 고유한 책 제목의 수만 계산합니다. 📚


🚦 DISTINCT의 사용 사례

1. 중복 제거

  • DISTINCT는 특정 컬럼에서 중복된 값을 제거하고 고유한 값만 가져올 때 유용합니다. 예를 들어, 중복된 작가중복된 도시를 목록에서 제거하고 싶을 때 사용합니다.

2. 집계 함수와 결합

  • COUNT(DISTINCT ...), SUM(DISTINCT ...), AVG(DISTINCT ...)와 같은 집계 함수와 결합하여 중복값을 제외한 결과를 계산할 수 있습니다. 예를 들어, 중복된 판매 기록을 제외하고 유일한 판매량을 구할 수 있습니다.

📌 예시 2: 여러 컬럼에서 DISTINCT 사용

SELECT DISTINCT author, title FROM books;

설명: 이 쿼리는 authortitle 컬럼의 조합에서 중복을 제거합니다. 즉, 동일한 작가책 제목이 여러 번 존재하면, 한 번만 결과에 포함됩니다.

예시 결과:

author title

김종원 책 제목 A
이순신 책 제목 B
한강 책 제목 C
김종원 책 제목 A

🚀 DISTINCT 사용 시 주의사항

🔥 성능 이슈

  • DISTINCT는 중복 값을 제거하려면 전체 데이터를 스캔해야 하므로, 대규모 데이터셋에서는 성능이 저하될 수 있습니다. 성능을 고려하여 적절히 사용해야 합니다.

전체 행에서 중복 제거

  • DISTINCT는 모든 컬럼이 고유해야만 중복을 제거합니다. 예를 들어, 여러 컬럼을 SELECT할 때, 각 컬럼의 값이 모두 동일한 행만 중복으로 취급합니다.

결론

DISTINCT는 SQL에서 중복된 값을 제거하고, 고유한 값을 반환하는 데 사용됩니다. **COUNT(DISTINCT ...)**와 같은 집계 함수와 결합하여 중복을 제거한 고유한 값을 셀 수 있습니다. 하지만 성능에 영향을 미칠 수 있기 때문에 대규모 데이터에서는 신중히 사용해야 합니다.

이 포스팅을 통해 DISTINCT의 활용 방법과 그 유용성을 이해하고, 실무에서 더 효율적인 데이터 처리 방법을 익히셨길 바랍니다! 🚀