본문 바로가기

dev/데이터베이스

ntile 사용법

PostgreSQL에서 특정 데이터를 기준으로 그룹으로 나눠야 할 때

 

ntile 함수를 사용하면 손쉽게 할 수 있습니다.

 

예제 테이블

 

예제 테이블에서 col2 컬럼을 기준으로 ntile 함수 예제를 진행하겠습니다.

 

ntile 사용 예제

 

빨간색 상자를 보면 ntile 함수 파라미터로 "6"이 있는데

 

이 파라미터는 ntile이 분할하는 그룹 수입니다.

 

즉 6개의 그룹으로 나누겠다는 뜻입니다.

 

그리고 뒤에 있는 over는 각 로우를 어떻게 정렬할 건지 나타내고 있습니다.

 

따라서 col2 컬럼 기준으로 내림차순으로 정렬하겠다는 뜻입니다.

 

여기서 조금 더 나아가서 각 그룹별 최소값과 최대값을 구하려면 다음과 같이 하면 됩니다.

 

그룹별 최소값, 최대값

 

이전의 쿼리를 with문으로 묶어서

 

각 그룹별 최소값과 최대값을 구합니다.

 

빨간색 상자를 보면 lag함수를 사용해서 최대값을 구하고 있는데

 

이는 상위 그룹의 최소값이 하위 그룹의 최대값으로 하기 위한 것입니다.

 

따라서 lag함수 파라미터 MIN(AA.COL2)과 1은 각각 바로 앞의 행(1)의 최소값(MIN(AA.COL2))을 가져오는 것을 뜻하고

 

만약 그 값이 null 이면 현재 행의 최대값을 사용하겠다는 뜻입니다.

'dev > 데이터베이스' 카테고리의 다른 글

DBeaver query plan  (0) 2021.11.03
dbeaver ERD 조회  (0) 2021.10.30
dbeaver 스크립트 파일 위치  (0) 2021.09.07
PostgreSQL DATE_PART 함수  (0) 2021.03.17
Postgresql 테이블 복원  (2) 2020.01.16