어제는 OFFSET으로 앞의 행을 건너뛰었습니다. 오늘은 조회 결과에 같은 값이 여러 번 있을 때 DISTINCT로 중복을 제거해 보겠습니다. 상품 가격 목록을 한 번씩만 보고 싶을 때 유용합니다.
예제 데이터
아래 예제는 PostgreSQL 기준입니다. WITH와 VALUES로 데이터를 쿼리 안에 만들기 때문에 그대로 실행할 수 있습니다.
| product_id | product_name | price |
|---|---|---|
| 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로 결과 열에 이해하기 쉬운 이름을 붙여 보겠습니다.
반응형
'SQL 기초' 카테고리의 다른 글
| 오늘의 쿼리 07 | AS로 결과 열 이름 바꾸기 (0) | 2026.10.30 |
|---|---|
| 오늘의 쿼리 05 | OFFSET으로 앞의 행 건너뛰기 (0) | 2026.10.28 |
| 오늘의 쿼리 04 | LIMIT으로 결과 개수 제한하기 (0) | 2026.10.27 |
| 오늘의 쿼리 03 | ORDER BY로 조회 결과 정렬하기 (0) | 2026.10.26 |
| 오늘의 쿼리 02 | WHERE로 원하는 행만 골라보기 (0) | 2026.10.25 |