일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- java spring
- STS
- 리눅스
- @AspectJ
- XML
- SpringJDBC
- POJO
- spring aop
- spring framework
- JdbcTemplate
- 마이바티스
- Spring JDBC
- Di
- JDBC TEMPLATE
- Linux
- spring
- 컨테이너
- pointcut
- @Spring-Test
- unix
- @JUnit
- Spring Boot
- Dependency Injection
- @test
- Ubunt
- Framework
- myBatis
- AOP
- java
- 프로퍼티
- Today
- Total
개키우는개발자 : )
PostgreSQL 중복 값 제외 (DISTINCT 문) 본문
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;
실습
- SELECT DISTINCT를 사용하여 BCOLOR 컬럼의 중복 값을 제거하여 조회하며
제거된 BCOLOR 컬럼 값 기준으로 정렬
SELECT
DISTINCT BCOLOR
FROM
T1
ORDER BY
BCOLOR;
NULL 또한 값이기 때문에 NULL 또한 조회가 됩니다.
- SELECT DISTINCT를 사용하여 BCOLOR+FCOLOR 컬럼의 중복 값을 제거하여 조회하며
제거된 BCOLOR+FCOLOR 컬럼 값 기준으로 정렬
SELECT
DISTINCT BCOLOR,FCOLOR
FROM
T1
ORDER BY
BCOLOR,FCOLOR;
RED , RED 중복이 제거되어 하나의 행만 보이는 걸 확인할 수 있습니다.
- SELECT DISTINCT를 사용하여 BCOLOR 컬럼 값 기준 중복을 제거하며 FCOLOR 컬럼 값은 단 한개 값 만을 보여줍니다.
SELECT
DISTINCT ON(BCOLOR) BCOLOR
,FCOLOR
FROM
T1
ORDER BY
BCOLOR,FCOLOR;
BCOLOR 값 기준으로 중복을 제거하며, FCOLOR의 값은 ORDER BY 기준으로 정렬하여 보여줍니다.
모든 데이터를 조회하였을 때 BCOLOR을 기준으로 각 중복 값을 제거하여 데이터를 조회합니다.
- SELECT DISTINCT를 사용하여 BCOLOR 컬럼 값 기준 중복을 제거하며 FCOLOR 컬럼 값은 단 한개 값 만을 보여주며
FCOLOR 컬럼 값을 보여 줄 때 내림차순 으로 정렬합니다.
SELECT
DISTINCT ON(BCOLOR) BCOLOR
,FCOLOR
FROM
T1
ORDER BY
BCOLOR,FCOLOR DESC;
모든 데이터를 조회하였을 때 BCOLOR을 기준으로 각 중복 값을 제거하여 데이터를 조회합니다.
중복되는 BLUE 값 에서 내림차순 인 RED ,
GREEN도 마찬가지로 RED,
중복되는 RED중에 NULL이 가장 큰 값(최상위) 이기 때문에 NULL의 값이 조회되며 ,
NULL은 중복값이 없기때문에 제거없이 조회가 됩니다.
DISTINCT ON 같은 경우에는 이런 기능이 있다 정도만 알면 될것 같습니다
'PostgreSQL > 데이터 조회와 필터링' 카테고리의 다른 글
PostgreSQL 결과의 제한 (FETCH 절) (0) | 2019.10.27 |
---|---|
PostgreSQL 결과의 제한 (LIMIT 절) (0) | 2019.10.27 |
PostgreSQL 필터링 조회 (WHERE 절) (0) | 2019.10.26 |
PostgreSQL 데이터 정렬 (ORDER BY 문) (0) | 2019.10.26 |
PostgreSQL 데이터 조회 (SELECT 문) (4) | 2019.10.26 |