Oracle 오라클 그룹 별 순번 매기는 법 ( ROW_NUMBER )
ROW_NUMBER 란?
안녕하세요. 그룹화된 데이터를 조회할 때 순번을 매긴 행 번호가 필요할 때가 있습니다.
예를 들어, 학교와 학급별로 성별에 따른 순번이 필요할 때, 이러한 경우에는 ROW_NUMBER() 함수를 사용하면 됩니다.
사용 예시

위와 같이 학교, 학급별로 성별에 대한 순번이 필요할 때 아래와 같이 하시면 됩니다.
사용방법 )
아래 예시는 학교, 학급별로 성별에 따른 순번을 매기는 쿼리입니다.
쿼리문 )
SELECT 학교,
학급,
성별,
인원,
ROW_NUMBER() OVER (PARTITION BY 학교, 학급, 성별 ORDER BY 성별, 인원)
FROM DUAL
ROW_NUMBER() 함수 설명
ROW_NUMBER() 함수는 지정된 그룹 내에서 행의 고유한 순번을 생성합니다.
이 함수는 다음과 같은 구조로 사용됩니다.
ROW_NUMBER() OVER (PARTITION BY [그룹핑컬럼] ORDER BY [정렬])
PARTITION BY: 그룹화할 컬럼을 지정합니다. 예를 들어, PARTITION BY 학교, 학급, 성별은 학교, 학급, 성별에 따라 데이터를 그룹화합니다.
ORDER BY: 그룹 내에서 순서를 지정할 컬럼을 정의합니다. 예를 들어, ORDER BY 성별, 인원은 성별과 인원 순으로 데이터를 정렬합니다.
PARTITION BY의 중요성
PARTITION BY 절을 사용하여 데이터를 그룹화하면 각 그룹 내에서 독립적으로 순번을 매길 수 있습니다.
PARTITION BY 절을 생략하면 전체 데이터 집합에 대해 하나의 일련번호를 생성합니다.
ROW_NUMBER()와 유사한 함수
순번을 매기는 방법에는 ROW_NUMBER() 외에도 다음과 같은 함수들이 있습니다
- RANK(): 동일한 값에 대해 같은 순번을 매기지만 순번이 건너뛰는 방식으로 부여됩니다.
- DENSE_RANK(): 동일한 값에 대해 같은 순번을 매기지만 순번이 건너뛰지 않는 방식으로 부여됩니다.
- NTILE(n): 결과를 n개의 동일한 크기의 그룹으로 나누고 각 그룹에 고유 번호를 부여합니다.
ROW_NUMBER() 함수는 데이터 분석 및 리포팅 시 매우 유용하게 사용됩니다.
특히 그룹화된 데이터 내에서 순번을 매겨야 할 때 매우 편리합니다.
실제 업무에서도 고객사로부터 데이터 자료 요청을 받을 때 자주 사용되는 함수입니다.
위 설명을 바탕으로 ROW_NUMBER() 함수를 활용하여 데이터를 효율적으로 처리하시기 바랍니다.
궁금하신 점이 있으면 댓글로 문의해 주세요.
읽어주셔서 감사합니다. 😊