SQL 기초

오늘의 쿼리 06 | DISTINCT로 중복 값 없이 조회하기

Sallagudia 2026. 10. 29. 08:00

어제는 OFFSET으로 앞의 행을 건너뛰었습니다. 오늘은 조회 결과에 같은 값이 여러 번 있을 때 DISTINCT로 중복을 제거해 보겠습니다. 상품 가격 목록을 한 번씩만 보고 싶을 때 유용합니다.

예제 데이터

아래 예제는 PostgreSQL 기준입니다. WITH와 VALUES로 데이터를 쿼리 안에 만들기 때문에 그대로 실행할 수 있습니다.

product_idproduct_nameprice
1노트3000
2펜1000
3지우개1000
4가방20000
5파일5000

오늘의 쿼리

WITH products (product_id, product_name, price) AS (
    VALUES
        (1, '노트', 3000),
        (2, '펜', 1000),
        (3, '지우개', 1000),
        (4, '가방', 20000),
        (5, '파일', 5000)
)
SELECT DISTINCT price
FROM products
ORDER BY price ASC;

DISTINCT는 SELECT 바로 뒤에 씁니다. 펜과 지우개의 가격은 모두 1000원이지만, 결과에는 1000이 한 번만 나옵니다. ORDER BY를 붙여 가격이 낮은 순서로 표시합니다.

예상 결과

price
1000
3000
5000
20000

실무에서 주의할 점

DISTINCT는 선택한 열 전체의 조합을 기준으로 중복을 판단합니다. 예를 들어 SELECT DISTINCT product_name, price라면 이름이 서로 다른 펜과 지우개는 둘 다 남습니다. 또 NULL이 여러 개라면 중복 제거 결과에는 한 행만 남습니다. 결과 순서가 필요하면 오늘처럼 ORDER BY를 명시하세요.

참고: PostgreSQL 공식 문서 — DISTINCT

다음 글에서는 AS로 결과 열에 이해하기 쉬운 이름을 붙여 보겠습니다.

반응형