본문 바로가기
자격증 준비/SQLD

DISTINCT란 무엇인가: 중복 제거 쉽게 이해하기

by 코딩사무소장 2026. 3. 15.
반응형

DISTINCT란 무엇인가: 중복 제거 쉽게 이해하기

SQL을 공부하다 보면 DISTINCT를 자주 보게 됩니다. SELECT로 데이터를 조회했는데 같은 값이 여러 번 반복되어 나와서, 왜 이런 일이 생기는지 헷갈리는 경우가 많습니다. 결론부터 말하면 DISTINCT는 조회 결과에서 중복된 값을 제거하는 키워드입니다. 이 글에서는 SQL 초보자와 SQLD 준비생이 헷갈리지 않도록 DISTINCT의 의미, 언제 쓰는지, 예제, 자주 하는 실수까지 한 번에 정리해보겠습니다.

이 글은 이런 분께 추천합니다
  • DISTINCT가 왜 필요한지 헷갈리는 분
  • 중복 제거와 GROUP BY 차이를 정리하고 싶은 분
  • SQLD에서 DISTINCT 관련 문제를 자주 틀리는 분
  • 조회 결과를 깔끔하게 정리하는 방법이 궁금한 비전공자

DISTINCT란 무엇인가

DISTINCT는 조회 결과에서 중복된 값을 하나만 남기고 제거하는 키워드입니다.

예를 들어 직원 테이블에서 department_id를 조회했는데 같은 부서 번호가 여러 번 반복될 수 있습니다. 이럴 때 DISTINCT를 쓰면 중복 없이 부서 번호 목록만 볼 수 있습니다.

쉽게 말하면 DISTINCT는 “똑같은 값은 한 번만 보여줘”라고 이해하면 됩니다.

왜 DISTINCT가 필요할까

실제 테이블에는 같은 값이 여러 행에 반복해서 들어 있을 수 있습니다.

  • 직원 여러 명이 같은 부서에 속할 수 있다
  • 주문 여러 건이 같은 회원에게 속할 수 있다
  • 여러 학생이 같은 학과에 속할 수 있다

그런데 어떤 상황에서는 전체 행이 아니라, 중복 없는 값 목록만 보고 싶을 수 있습니다. 이때 DISTINCT가 유용합니다.

가장 기본적인 예제

부서 번호를 중복 없이 조회하고 싶다면 아래처럼 쓸 수 있습니다.

SELECT DISTINCT department_id
FROM employees;

이 쿼리는 employees 테이블의 department_id를 조회하되, 같은 값은 한 번만 보여줍니다.

DISTINCT를 안 쓰면 어떻게 될까

DISTINCT 없이 조회하면 테이블에 있는 행 수만큼 값이 그대로 나옵니다.

예를 들어 부서 10번에 직원이 3명, 부서 20번에 직원이 2명 있으면:

10
10
10
20
20

DISTINCT를 쓰면 결과는 이렇게 정리됩니다.

10
20

여러 컬럼에 DISTINCT를 쓰면 어떻게 될까

DISTINCT는 한 컬럼뿐 아니라 여러 컬럼 조합에도 적용할 수 있습니다.

SELECT DISTINCT department_id, job_id
FROM employees;

이 경우 department_id만 보는 것이 아니라, department_id와 job_id 조합이 같은 행을 중복으로 판단합니다.

즉, 여러 컬럼에 DISTINCT를 쓰면 한 컬럼만 따로 중복 제거하는 것이 아니라 선택한 컬럼 전체 조합 기준으로 중복 제거를 한다고 이해해야 합니다.

DISTINCT와 GROUP BY는 무엇이 다를까

초보자가 자주 헷갈리는 부분입니다. 둘 다 결과가 비슷해 보일 수 있지만 역할은 다릅니다.

  • DISTINCT = 중복 제거
  • GROUP BY = 그룹화 후 집계

예를 들어 부서 번호만 중복 없이 보고 싶다면 DISTINCT가 자연스럽고, 부서별 직원 수를 구하고 싶다면 GROUP BY가 필요합니다.

구분 DISTINCT GROUP BY
목적 중복 제거 같은 값끼리 묶기
주요 사용 중복 없는 목록 조회 COUNT, SUM, AVG 등 집계
예시 중복 없는 부서 목록 부서별 직원 수

DISTINCT와 COUNT를 같이 쓰는 경우

DISTINCT는 COUNT와 함께 자주 나옵니다.

예를 들어 중복 없는 부서 개수를 세고 싶다면 아래처럼 쓸 수 있습니다.

SELECT COUNT(DISTINCT department_id)
FROM employees;

이 쿼리는 전체 직원 수를 세는 것이 아니라, 중복 없는 department_id 종류 수를 구합니다.

초보자가 자주 하는 실수

자주 하는 실수 1

DISTINCT를 한 컬럼에만 적용된다고 생각하는 것

여러 컬럼과 함께 쓰면 선택한 컬럼 조합 전체를 기준으로 중복 제거가 됩니다.

자주 하는 실수 2

DISTINCT와 GROUP BY를 완전히 같은 것으로 생각하는 것

결과가 비슷해 보일 수는 있지만, DISTINCT는 중복 제거, GROUP BY는 그룹화와 집계라는 차이가 있습니다.

자주 하는 실수 3

COUNT(*)와 COUNT(DISTINCT 컬럼)을 같은 의미로 생각하는 것

COUNT(*)는 전체 행 수를 세고, COUNT(DISTINCT 컬럼)은 중복 없는 값 개수를 셉니다. 완전히 다른 결과가 나올 수 있습니다.

비전공자는 이렇게 외우면 쉽다

  • DISTINCT = 중복 제거
  • GROUP BY = 묶어서 계산
  • COUNT(DISTINCT 컬럼) = 중복 없는 값 개수 세기
  • “같은 건 한 번만 보여줘”라고 생각하면 쉽습니다.

핵심 요약

  • DISTINCT는 조회 결과에서 중복된 값을 제거하는 키워드입니다.
  • 한 컬럼뿐 아니라 여러 컬럼 조합에도 적용할 수 있습니다.
  • DISTINCT는 중복 제거, GROUP BY는 그룹화라는 차이가 있습니다.
  • COUNT(DISTINCT 컬럼) 형태로도 자주 사용됩니다.
  • 중복 없는 목록이나 종류 수를 구할 때 매우 유용합니다.

FAQ

DISTINCT는 왜 필요한가요?

중복된 값이 반복될 때, 같은 값은 한 번만 보고 싶을 경우 필요합니다.

DISTINCT와 GROUP BY는 같은가요?

아닙니다. DISTINCT는 중복 제거, GROUP BY는 그룹화와 집계 목적이 더 강합니다.

여러 컬럼에 DISTINCT를 쓰면 어떻게 되나요?

선택한 컬럼 전체 조합이 같은 행을 중복으로 판단해 제거합니다.

COUNT(DISTINCT 컬럼)은 무엇을 의미하나요?

해당 컬럼에서 중복 없는 값의 개수를 세는 의미입니다.

SQLD에서도 DISTINCT가 자주 나오나요?

네. 중복 제거, COUNT와의 조합, GROUP BY와의 차이와 함께 자주 나오는 기본 개념입니다.

반응형