본문 바로가기
Database/엑셀로 배우는 SQL 실무 - 입문

[SQL] 엑셀로 배우는 SQL - 중복제거 (DISTINCT)

by 따라쟁이개발자 2023. 1. 7.

엑셀에서 '데이터' 탭에 가보시면, 중복된 항목 제거라는 기능을 보실 수 있습니다.

말 그대로 항목 내에 중복된 값이 있는 경우, 각 값 하나씩만 남기고 나머지는 제거하겠다는 의미인데요.

여러 개의 항목이 섞여있는 표에서 특정 항목 값을 추리고 싶은 경우 주로 사용합니다.

SQL에서는 중복 제거 방법으로 DISTINCT라는 키워드를 사용합니다

 

함께 알아보겠습니다!

 

 

엑셀로 먼저 살펴보기

조금 번거롭지만 이전 사용했던 엑셀 표에서 '음료종류'와 '가격' 항목만 분리시켜봅니다.

이후 중복 제거를 적용한 결과입니다.

 

1. 음료종류 중복제거

 

2. 음료종류, 가격 중복제거 

 

 

SQL로 살펴보기

엑셀과는 조금 다르게, SQL에선 Table 변경 없이도 특정 column만 따로 조회해 올 수 있기 때문에

그대로 아래 Table을 사용해 진행해 볼게요.

 

중복제거 (DISTINCT)

SQL에서 중복 제거 시 사용되는 키워드는 DISTINCT 입니다.

DISTINCT는 SELECT절에서 사용되고 그 뒤에 중복 제거할 column 명들을 나열하여 결과를 출력해 냅니다.

 

DISTINCT a는a라는 column 값 중복 제거한 결과를 의미합니다.

DISTINCT a, b, c a, b, c라는 columne 값들에 대해 중복 제거한 결과를 의미합니다. 

 

SELECT DISTINCT type	-- 또는 DISTINCT(type)
FROM beverage_stock;

 

SELECT DISTINCT type, price
FROM beverage_stock;

 

 

DISTINCT 활용

DISTINCT는 *(Asterisk)와 함께 쓰일 수도 있습니다.

'굳이..?'라고 생각하실 수도 있는데요. 맞습니다. 전체 행을 대상으로 봤을 때 중복값이 있을 확률은 드물죠

 

하지만, 간혹 그 점을 활용해 DISTINCT * 를 사용하는 경우도 있습니다.

로직상의 문제로 또는 휴먼 에러로 중복 row가 들어가면 안 될 Table에 row가 중복으로 잘못 들어간 경우가 있을 수 있죠

 

row의 수가 몇 천 개, 몇 만개되면 그 안에서 중복 row를 육안으로 찾아내기도 힘들고요

이런 경우, 종종 사용하는 방법이 전체 COUNT와 DISTINCT 된 결과를 COUNT 하여 비교하는 것입니다.

 

아래와 같은 상황이 생겼다고 해볼게요. 오렌지 주스가 잘못해서 한번 더 들어가게 된 상황입니다.

 

이 Table에 중복 row가 있다는 것을 어떻게 찾아낼 수 있을까요?

나중에 다른 시리즈에서 다룰 내용이긴 하지만 미리 맛보면, FROM절에는 Table명 대신 SELECT문이 올 수 있습니다.

인라인뷰 서브쿼리라고 하는데요 괄호 안 SELECT 결과가 임시 Table처럼 작동하는 거죠

 

이 인라인뷰 서브쿼리를 DISTINCT * 한 결과는 중복이 제거된 데이터들입니다.

이 데이터들을 전체 COUNT 해보면 중복 제거된 행 개수가 나오겠죠?

원본 Table을 COUNT(*) 한 결과와, DISTINCT 된 서브쿼리를 COUNT(*) 한 결과가 다르다면 row 중복이 있다는 뜻입니다.

 

실무에선 중복 row가 발생했는지 여부를 찾기 위해 종종 이런 방법도 사용하곤 합니다.

 

 

정리

이번 장에선 자주 쓰이는 키워드 중 하나인 DISTINCT에 대해 알아봤습니다.

 

실제로 항목이 여러 개인 Table에서 유형, 구분 같은 column들을 중복제거 해서 추려내고 싶은 경우가 종종 있는데요

이런 경우 DISTINCT를 사용해주면 좋습니다.

 

DISTINCT 활용의 경우 다루기 좀 성급한 감이 있었지만

실무에서 이런 식으로 사용되기도 한다라고 알려드리고 싶어서 같이 다뤄봤네요

 

그럼 이제 다음 장에선 SELECT 문의 마지막 장인 정렬에 대해서 알아보겠습니다. 🙂

 

 

[ 참고 ]

 MySQL로 배우는 데이터베이스 개론과 실습

 SQL 개발자 이론서 + 기출문제

댓글