SELECT DISTINCT절을 사용하여 쿼리에서 반환된 결과 집합에서 중복 행을 제거 하는 방법

 

 

DISTINCT절은 SELECT결과 집합에서 중복 행을 제거하기 위해 문 에서 사용됩니다 . 

DISTINCT절은 중복의 각 그룹에 대해 하나 개의 행을 유지합니다.

SELECT
   DISTINCT column1, column2
FROM
   table_name;

- column1및 column2열의 값 조합 이 중복 평가에 사용됩니다.

 

DISTINCT ON (expression) 다음 구문을 사용하여 각 중복 그룹의 "첫 번째" 행을 유지하는 기능을 제공 

SELECT
   DISTINCT ON (column1) column_alias,
   column2
FROM
   table_name
ORDER BY
   column1,
   column2;

- SELECT명령문 에서 반환되는 행의 순서 는 지정되지 않으므로 각 복제 그룹의 "첫 번째" 행도 지정되지 않습니다.

- 결과 집합을 예측 가능하게 만들기 위해 항상 ORDER BY와 함께 절을 사용하는 것이 좋습니다.


SELECT DISTINCT 예제

CREATE TABLE distinct_demo (
	id serial NOT NULL PRIMARY KEY,
	bcolor VARCHAR,
	fcolor VARCHAR
);
INSERT INTO distinct_demo (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');
SELECT
	id,
	bcolor,
	fcolor
FROM
	distinct_demo ;

 

1) PostgreSQL DISTINCT1열 

SELECT
	DISTINCT bcolor
FROM
	distinct_demo
ORDER BY
	bcolor;

- bcolor는 테이블에서 열의 고유 값을 선택합니다.

- SELECT를 사용하여 결과 집합을 알파벳순으로 정렬합니다.(ORDER BY)

 

2) PostgreSQL DISTINCT다중 열

-- DISTINCT여러 열 에서 절 을 사용하는 방법
SELECT
	DISTINCT bcolor,
	fcolor
FROM
	distinct_demo
ORDER BY
	bcolor,
	fcolor;

- bcolor와 fcolor를 모두 지정했기 때문에 Postgre의 SELECT DISTINCT는 행의 고유성 평가를 위해 두 개를 결합했습니다.

- DISTINCT가 두 열에 모두 적용되었기 때문에 하나의 행이 제거가 되었습니다.

 

3) PostgreSQL DISTINCT ON

-- bcolor와 fcolor로 정렬한 다음 중복 그룹에 대해 반환된 결과 집합의 첫 번째 행을 유지
SELECT
	DISTINCT ON (bcolor) bcolor,
	fcolor
FROM
	distinct_demo 
ORDER BY
	bcolor,
	fcolor;

 

반응형

'SW ENGINEERING > Postgres' 카테고리의 다른 글

[PostgreSQL] BASIC - LIMIT  (0) 2021.09.01
[PostgreSQL] BASIC - WHERE  (0) 2021.09.01
[PostgreSQL] BASIC - ORDER BY  (0) 2021.09.01
[PostgreSQL] BASIC - Column_alias  (0) 2021.09.01
[PostgreSQL] BASIC - SELECT  (0) 2021.09.01
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기