[Oracle] 오라클 WITHIN GROUP 절 사용법 정리 (LISTAGG, RANK)

오라클 SQL에서 LISTAGG 함수를 사용할 때 WITHIN GROUP 절을 함께 사용하는 것을 많이 볼 수 있다. WITHIN GROUP 절은 평소에 많이 사용하지 않기 때문에 다소 생소하게 느껴질 수 있다.

 

WITHIN GROUP 절은 LISTAGG, RANK, DENSE_RANK 함수와 함께 사용할 수 있다. 그 외에 사용할 수 있는 곳은 아직 찾지는 못했다... 아직 사용할 수 있는 곳이 많지 않기 때문에 아래의 예제만 이해하고 있어도 될 듯하다.

 

WITHIN GROUP 절은 집계 대상 데이터의 정렬을 지정한다. 

 

WITHIN GROUP ( ORDER BY 컬럼, 컬럼... [ ASC | DESC ] )

 

LISTAGG 함수 예제

LISTAGG

LISTAGG 함수를 사용하여 컬럼의 문자열을 합칠 때 WITHIN GROUP 절을 사용하면 정렬이 가능하다.

 

SELECT LISTAGG(job, ',') WITHIN GROUP(ORDER BY job) AS jobs
  FROM emp
 WHERE deptno = 20

 

RANK 함수 예제

RANK 함수에 입력된 값의 순위를 WITHIN GROUP 절의 정렬 기준으로 순위를 알 수 있다.

 

SELECT RANK(1100) WITHIN GROUP(ORDER BY sal) AS sal_rank
  FROM emp
 WHERE deptno = 20 

 

사용_예제_쿼리.txt
0.01MB

 

 

댓글

Designed by JB FACTORY