개키우는개발자 : )

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

PostgreSQL/데이터 조회와 필터링

PostgreSQL 중복 값 제외 (DISTINCT 문)

DOGvelopers 2019. 10. 26. 21:18
반응형

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);

데이터 등록

commit 다음에 자세히 알아보며 DISTINCT 실습을 해보겠습니다.

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;

null

실습

 

- SELECT DISTINCT를 사용하여 BCOLOR 컬럼의 중복 값을 제거하여 조회하며

제거된 BCOLOR 컬럼 값 기준으로 정렬

 

SELECT 
	DISTINCT BCOLOR
FROM
	T1
ORDER BY
	BCOLOR;

NULL 또한 값이기 때문에 NULL 또한 조회가 됩니다.

null

- SELECT DISTINCT를 사용하여 BCOLOR+FCOLOR 컬럼의 중복 값을 제거하여 조회하며

제거된 BCOLOR+FCOLOR 컬럼 값 기준으로 정렬

 

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

RED , RED 중복이 제거되어 하나의 행만 보이는 걸 확인할 수 있습니다.

null

- SELECT DISTINCT를 사용하여 BCOLOR 컬럼 값 기준 중복을 제거하며 FCOLOR 컬럼 값은 단 한개 값 만을 보여줍니다.

 

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

BCOLOR 값 기준으로 중복을 제거하며, FCOLOR의 값은 ORDER BY 기준으로 정렬하여 보여줍니다.

null

모든 데이터를 조회하였을 때 BCOLOR을 기준으로 각 중복 값을 제거하여 데이터를 조회합니다.

null

 

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

FCOLOR 컬럼 값을 보여 줄 때 내림차순 으로 정렬합니다.

 

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

null

모든 데이터를 조회하였을 때 BCOLOR을 기준으로 각 중복 값을 제거하여 데이터를 조회합니다.

중복되는 BLUE 값 에서 내림차순 인 RED ,

GREEN도 마찬가지로 RED,

중복되는 RED중에 NULL이 가장 큰 값(최상위) 이기 때문에 NULL의 값이 조회되며 ,

NULL은 중복값이 없기때문에 제거없이 조회가 됩니다.

null

 

DISTINCT ON 같은 경우에는 이런 기능이 있다 정도만 알면 될것 같습니다

반응형
Comments