Computer >> 컴퓨터 >  >> 프로그래밍 >> SQL

SQL DISTINCT 완벽 가이드: 중복 값 제거하고 고유한 데이터만 조회하기

데이터베이스를 다루다 보면 특정 데이터셋에서 고유한 값만 추출해야 하는 경우가 자주 있습니다. 예를 들어 지금까지 판매한 제품 이름 목록을 확인하거나, 영화 데이터베이스에 존재하는 모든 장르 목록을 뽑아내야 할 수도 있습니다.

SQL에는 이런 정보를 손쉽게 조회할 수 있는 내장 기능인 DISTINCT가 있습니다. DISTINCT 연산자를 사용하면 중복된 레코드를 제거하고, 데이터셋에서 고유한 값 조합만 깔끔하게 가져올 수 있습니다.

이 글에서는 SQL의 DISTINCT 기본 개념과 함께, 이 연산자를 활용하면 좋은 상황을 예제와 함께 살펴보겠습니다.

SQL 쿼리 기본 복습

데이터베이스에서 정보를 조회하려면 쿼리(query)를 작성해야 합니다. SQL 쿼리는 거의 항상 SELECT 문으로 시작하며, 어떤 정보를 가져올지 지정합니다. SQL 쿼리의 기본 문법은 다음과 같습니다.

SELECT column_name FROM table_name WHERE your_query_conditions;

예시를 통해 쿼리가 실제로 어떻게 동작하는지 확인해 보겠습니다. 아래 쿼리는 회사에 재직 중인 모든 직원의 이름과 직급을 반환합니다.

SELECT name, title FROM employees;

실행 결과:

nametitle
LukeSales Associate
MikeSales Associate
HannahSales Associate
GeoffSenior Sales Associate
AlexisSales Associate
JonahVice President of Sales
EmmaMarketing Director

여러 컬럼을 조회하려면 위 예시처럼 컬럼 이름을 쉼표로 구분하면 됩니다. 반대로 테이블의 모든 컬럼을 가져오고 싶다면 전체 컬럼을 의미하는 별표(*)를 사용하면 됩니다.

쿼리 작성 시 WHERE 절을 사용하면 특정 조건을 만족하는 레코드만 필터링할 수 있습니다. 예를 들어 회사의 모든 영업 사원(Sales Associate)을 조회하고 싶다면 다음과 같은 쿼리를 사용할 수 있습니다.

SELECT name, title FROM employees
WHERE title = 'Sales Associate';

실행 결과:

nametitle
LukeSales Associate
MikeSales Associate
HannahSales Associate
AlexisSales Associate

(4 rows)

쿼리의 기본기를 익혔으니, 이제 SQL에서 DISTINCT를 사용하는 방법을 알아보겠습니다.

SQL DISTINCT란 무엇인가?

데이터베이스에서 데이터를 조회하면 결과에 중복된 행이나 값이 포함될 수 있습니다. 예를 들어 직원들이 보유한 모든 직급 목록을 조회한다고 가정해 보겠습니다. 일반적인 SELECT 쿼리를 사용하면 중복된 값이 그대로 출력됩니다.

SELECT title FROM employees;

실행 결과:

title
Sales Associate
Sales Associate
Sales Associate
Senior Sales Associate
Sales Associate
Vice President of Sales
Marketing Director

(7 rows)

결과를 보면 'Sales Associate'라는 직급이 네 번 반복해서 나타납니다. 해당 직급을 가진 직원이 네 명이기 때문입니다. 하지만 몇 명이 그 직급을 갖고 있는지가 아니라, 데이터베이스에 어떤 직급들이 존재하는지만 알고 싶다면 어떻게 해야 할까요?

바로 이럴 때 DISTINCT 연산자가 필요합니다. DISTINCT 절을 사용하면 쿼리 결과에서 모든 중복 데이터를 제거할 수 있습니다.

DISTINCT 키워드는 SELECT 연산자와 함께 사용합니다. 앞서 실행한 쿼리에 DISTINCT를 추가한 예시는 다음과 같습니다.

SELECT DISTINCT title FROM employees;

실행 결과:

title
Sales Associate
Senior Sales Associate
Vice President of Sales
Marketing Director

(4 rows)

쿼리가 직원들이 보유한 모든 직급 목록을 반환했지만, 여러 직원이 공유하는 직급은 단 한 번만 표시되었습니다. 즉, 출력 결과에는 더 이상 중복된 값이 없습니다.

DISTINCT 연산자는 대용량 데이터셋을 다룰 때 특히 유용합니다. 위 예시에서는 직원이 7명뿐이었지만, 만약 500명이라면 DISTINCT 없이는 어떤 직급들이 존재하는지 한눈에 파악하기 어려울 것입니다.

마무리

이제 SQL 서버에서 DISTINCT 연산자를 사용하는 방법을 배웠습니다.

정리하자면, SELECT DISTINCT를 사용하면 테이블에서 데이터를 조회하면서 결과에서 중복된 행이나 값을 자동으로 제거할 수 있습니다. 예를 들어 회사의 모든 지점 목록이 필요하다면 DISTINCT를 활용해 깔끔한 목록을 만들 수 있습니다. 중복 데이터가 분석을 방해하는 대규모 데이터셋을 다룰 때 DISTINCT는 특히 강력한 도구입니다.