본문 바로가기

프로그래밍

[SQL] 오라클 Function, ROW_NUMBER() 사용법

동일 조건에 파일에 대해 순번을 주는 방법

이럴 경우 사용함..
1) History와 사용을 병행으로 하는 데이타일 경우
2) 계층구조의 데이타에서 특정 그룹의 데이타중 특정 필드로 정렬하여 1개의 값만 사용할 경우

즉, 각 ROW에 유일한 번호를 붙여 사용하기 유용하게 만드는 함수임.

e.g.) 부서별 해고일자순으로 ROW NUMBER 설정
SELECT
      deptno,
      ename,
      hiredate,
      ROW_NUMBER() OVER (PARTITION BY deptno ORDER BY hiredate) AS emp_id
  FROM
      emp;

[테이블 구조]

사용자 삽입 이미지




















위 예제에서 부서별 가장 최근 해고된 직원을 뽑기 위해서는
ROW_NUMBER() OVER (PARTITION BY deptno ORDER BY hiredate DESC)
수정한 후, 한번 더 select 절로 감싸 "emp_id = 1" 조건문을 추가하면 된다.

e.g.) 부서별 가장 최근 해고된 직원은?!
SELECT
      deptno,
      ename,
      hiredate,
   FROM
 (
     SELECT
          deptno,
          ename,
          hiredate,
          ROW_NUMBER() OVER (PARTITION BY deptno ORDER BY hiredate DESC) AS emp_id
       FROM
          emp;
 )
WHERE
     emp_id = 1