더북(TheBook)

분석 함수

① ROW_NUMBER( )

ROW_NUMBER는 ROWNUM 의사 컬럼과 비슷한 기능을 하는데, 파티션으로 분할된 그룹별로 각 로우에 대한 순번을 반환하는 함수다. 사원 테이블에서 부서별 사원들의 로우 수를 출력해 보자.

입력

    SELECT department_id, emp_name,
           ROW_NUMBER() OVER (PARTITION BY department_id
                              ORDER BY emp_name ) dep_rows
      FROM employees;
그림 7-16 ROW_NUMBER 함수

부서별 사원 리스트가 조회됐는데, dep_rows 컬럼에서 부서별로 순번이 조회되었다. 10번 부서에 속한 사원은 한 명이므로 순번은 1이지만 30번 부서는 1에서 4까지 순번이 매겨졌다. PARTITION BY 절에 부서번호를 명시해 부서별 파티션이 내부적으로 만들어졌고, 다시 이 파티션에서 사원명으로 정렬된 것이 보인다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.