반응형

 

 

 

 

 

 

오라클에서 ROW의 순번을 메겨 조회할때 ROWNUM을 이용한다.

 

 

1. ROWNUM 기본 사용법

시스템 함수 ROWNUM을 사용하면 아래와 같이 ROW의 순번을 가져올 수 있다.

SELECT ROWNUM,
       USER_NAME,
       USER_AGE,
       JOIN_DATE
FROM USER_INFO

 

 

 

2. ORDER BY 후 순번 메기기

ORDER BY로 정렬시킬 경우, ROWNUM으로 순번을 매긴 후 ORDER BY 정렬을 하기 때문에 ROWNUM의 순서가 아래와 같이 뒤섞이게 된다.

SELECT ROWNUM,
       USER_NAME,
       USER_AGE,
       JOIN_DATE
FROM USER_INFO
ORDER BY USER_AGE

 

ORDER BY후 섞여버린 ROWNUM이 정렬되어 순서대로 보여지기 원할때는 서브쿼리를 이용하면 된다.

SELECT ROWNUM,
       USER_NAME,
       USER_AGE,
       JOIN_DATE
FROM ( SELECT USER_NAME,
              USER_AGE,
              JOIN_DATE
        FROM USER_INFO
        ORDER BY USER_AGE
)

 

 

3. 정렬된 데이터의 MAX, MIN값 가져오기

ORDER BY를 통해 기준값을 정렬시킨 후 WHERE절에 ROWNUM이 1인 데이터를 걸어두면 기준값의 MAX,MIN를 가져올 수 있다. (MIN값을 찾을땐 ORDER BY DESC를 사용하면 된다) 

SELECT ROWNUM,
       USER_NAME,
       USER_AGE,
       JOIN_DATE
FROM ( SELECT USER_NAME,
              USER_AGE,
              JOIN_DATE
        FROM USER_INFO
        ORDER BY USER_AGE
)
WHERE ROWNUM = 1

 

 

4. 그룹별 순번 메기기 _ ROW_NUMBER() 함수

사실 2번의 방법대로 서브쿼리를 통해 정렬 후 순번을 메기는 방법은 상당히 비효율적이다.

오라클의 ROW_NUMBER() 함수를 이용하면 간단하게 정렬 후 순번을 메길 수 있다.

SELECT ROW_NUMBER() OVER (ORDER BY USER_AGE) AS NUM,
       USER_NAME,
       USER_AGE,
       JOIN_DATE
FROM USER_INFO

 

 

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기