본문 바로가기

DataBase/SQL

[SQL] DISTINCT와 PARTITION BY구문 사용법

흠... 예를 들어서 회원의 거주 지역 테이블이 있다고 가정해보면 다음과 같은 테이블이 

존재 할 수 있다.

 

거주지

-----

서울

경기

경기

서울

경남

전남

경기

 

7개의 행이라면 지역을 파악하는데 어려움이 없지만, 기본적으로 DB에 저장되는 회원의

수는 수 만이 넘어갈 것이기에 이 경우는 Order by 절을 사용한다고 해도 답이 안나온다.

 

이 경우

 

SELECT DISTINCT 거주지 FROM 테이블;

과 같이 하면, 다음과 같은 결과를 얻을 수 있다.

 

거주지

------

서울

경기

경남

전남

 

이와 같은 효과로 GROUP BY로 낼 수 있다.

SELECT 거주지 FROM 테이블 GROUP BY 거주지;

와 같이 한다면 말이다. 이 차이점은... 흠 좀 더 알아봐야 겠다.

 

PARTITION BY는 DISTINCT를 무시한다.

해서, 테이블에 DISTINCT가 걸려 있어도 이를 무시하고 원본을 대상으로 작업을 수행한다.

 

 ID

 점수

 그룹

 1

 10

 A

 2

 20

 B

 3

 15

 A


 

예로 위와 같은 테이블이 있다손 한다면, 

SELECT SUM(점수) OVER (PARTITION BY 그룹) AS "그룹합계" FROM 테이블

이면 그룹 A에 대해서 묶지 않고 개개의 데이터로 처리된다고 할 수 있다.

'DataBase > SQL' 카테고리의 다른 글

[SQL] SET XACT_ABORT ON의 의미  (0) 2013.02.13
[SQL] ISNULL()함수 사용법  (0) 2013.02.13
[SQL] between구문 사용법  (0) 2013.02.13
[SQL] Group by 컬럼 사용 팁  (0) 2013.02.13
[SQL] 테이블 삭제시 제약 조건제거  (0) 2013.02.13