Jin's Dev Story

[PostgreSQL] PostgreSQL 중복 값 제외 (DISTINCT 문) 본문

Database/PostgreSQL

[PostgreSQL] PostgreSQL 중복 값 제외 (DISTINCT 문)

woojin._. 2024. 6. 10. 09:59

DISTINCT 문법

  • SELECT 시 DISTINCT를 사용하면 중복 값을 제외한 결과 값이 출력됨
  • 즉, 같은 결과의 행이라면 중복을 제거할 수 있음
  • COLUMN_1의 값이 중복 값 존재 시 중복 값을 제거
SELECT DISTINCT COLUMN_1 FROM TABLE_NAME;
  • COLUMN_1 + COLUMN_2의 값이 중복 값 존재 시 중복 값을 제거
SELECT DISTINCT COLUMN_1, COLUMN_2 FROM TABLE_NAME

 

  • COLUMN_1 + COLUMN_2의 값이 중복 값 존재 시 중복 값을 제거, 결과를 명확하게 하기 위해 ORDER BY절 사용
SELECT DISTINCT COLUMN_1, COLUMN_2
FROM TABLE_NAME
ORDER BY COLUMN_1, COLUMN_2;

 

테이블 생성하기

CREATE TABLE T1 (ID SERIAL not null primary key, BCOLOR VARCHAR, FCOLOR VARCHAR);

 

데이터 등록

insert
	into T1 (BCOLOR,FCOLOR)
values
	('RED','RED'),
	('RED','RED'),
	('RED',NULL),
	(NULL,'RED'),
	('RED','GREEN'),
	('RED','BLUE'),
	('GREEN','RED'),
	('GREEN','BLUE'),
	('GREEN','GREEN'),
	('BLUE','RED'),
	('BLUE','GREEN'),
	('BLUE','BLUE');
    
-- 데이터 등록후 커밋 하기
commit;

 

조회

SELECT * FROM T1;

DISTINCT ON

  • 해당 컬럼 값을 단 한 개 값 만을 보여주는 것
  • DISTINCT ON(BCOLOR) BCOLOR

 

실습

 

 1) SELECT DISTINCT를 사용하여 BCOLOR 컬럼의 중복 값을 제거하여 조회하며, 제거된 BCOLOR 컬럼 값 기준으로 정렬

SELECT DISTINCT BCOLOR
FROM T1
ORDER BY BCOLOR;

 

 2)  SELECT DISTINCT를 사용하여 BCOLOR + FCOLOR 컬럼의 중복 값을 제거하여 조회하며, 제거된 BCOLOR + FCOLOR 컬럼 값 기준으로 정렬

SELECT DISTINCT BCOLOR, FCOLOR
FROM T1
ORDER BY BCOLOR, FCOLOR;

 

 3)  SELECT DISTINCT를 사용하여 BCOLOR 컬럼 값 기준 중복을 제거하며, FCOLOR 컬럼 값은 단 한 개 값 만을 보여줌

SELECT DISTINCT ON(BCOLOR) BCOLOR, FCOLOR
FROM T1
ORDER BY BCOLOR, FCOLOR;

 

 4)  SELECT DISTINCT를 사용하여 BCOLOR 컬럼 값 기준 중복을 제거하며, FCOLOR 컬럼 값은 단 한 개 값 만을 보여주며, FCOLOR 컬럼 값을 보여줄 때, 내림차순으로 정렬함

SELECT DISTINCT ON(BCOLOR) BCOLOR, FCOLOR
FROM T1
ORDER BY BCOLOR, FCOLOR DESC;