📌 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;
설명: 이 쿼리는 author와 title 컬럼의 조합에서 중복을 제거합니다. 즉, 동일한 작가와 책 제목이 여러 번 존재하면, 한 번만 결과에 포함됩니다.
예시 결과:
author title
김종원 | 책 제목 A |
이순신 | 책 제목 B |
한강 | 책 제목 C |
김종원 | 책 제목 A |
🚀 DISTINCT 사용 시 주의사항
🔥 성능 이슈
- DISTINCT는 중복 값을 제거하려면 전체 데이터를 스캔해야 하므로, 대규모 데이터셋에서는 성능이 저하될 수 있습니다. 성능을 고려하여 적절히 사용해야 합니다.
✅ 전체 행에서 중복 제거
- DISTINCT는 모든 컬럼이 고유해야만 중복을 제거합니다. 예를 들어, 여러 컬럼을 SELECT할 때, 각 컬럼의 값이 모두 동일한 행만 중복으로 취급합니다.
결론
DISTINCT는 SQL에서 중복된 값을 제거하고, 고유한 값을 반환하는 데 사용됩니다. **COUNT(DISTINCT ...)**와 같은 집계 함수와 결합하여 중복을 제거한 고유한 값을 셀 수 있습니다. 하지만 성능에 영향을 미칠 수 있기 때문에 대규모 데이터에서는 신중히 사용해야 합니다.
이 포스팅을 통해 DISTINCT의 활용 방법과 그 유용성을 이해하고, 실무에서 더 효율적인 데이터 처리 방법을 익히셨길 바랍니다! 🚀
'기술블로그' 카테고리의 다른 글
📌SQL Join 완전 정복 – 테이블 구조부터 조인 흐름까지! (0) | 2025.03.26 |
---|---|
📌 Sql에서 HAVING 절 사용 (0) | 2025.03.25 |
📌 MySQL Delete에서 서브쿼리와 Join 활용 (Error Code: 1093 해결 방법) (0) | 2025.03.25 |
📌 MySQL Safe Update Mode란? 활성화, 비활성화 (0) | 2025.03.25 |
📌 My Sql에서 가장 많은 책을 출판한 저자의 최근 출판된 책 찾기 (0) | 2025.03.25 |