[SQL] 055. 데이터 분석 함수로 출력 결과 넘버링 하기
Updated:
초보자를 위한 SQL 200제 교재를 토대로 공부한 내용입니다.
오라클 SQL을 기반으로 합니다.
실습에 사용한 테이블은 정보문화사 홈페이지에서 받을 수 있습니다.
[예시]
ROW_NUMBER() OVER는 출력되는 순서로 넘버링을 하는 함수이다.
다음 예시는 ENAME(사원이름) 순서로 넘버링을 진행한다.
SELECT ENAME, SAL, ROW_NUMBER() OVER (ORDER BY ENAME) AS OBS_NUMBER
FROM EMP;
[결과]
| ENAME | SAL | OBS_NUMBER |
|---|---|---|
| ADAMS | 1100 | 1 |
| ALLEN | 1600 | 2 |
| BLAKE | 2850 | 3 |
| CLARK | 2450 | 4 |
| FORD | 3000 | 5 |
| JAMES | 950 | 6 |
| JONES | 2975 | 7 |
| KING | 5000 | 8 |
| MARTIN | 1250 | 9 |
| MILLER | 1300 | 10 |
| SCOTT | 3000 | 11 |
| SMITH | 800 | 12 |
| TURNER | 1500 | 13 |
| WARD | 1250 | 14 |
[예시2]
ROW_NUMBER() OVER는 PARTITION BY로 그룹별로 넘버링이 가능하다.
-- 부서번호별 이름별로 넘버링
SELECT DEPTNO, ENAME,
ROW_NUMBER() OVER (PARTITION BY DEPTNO ORDER BY ENAME) AS OBS_NUMBER
FROM EMP;
[결과2]
| DEPTNO | ENAME | OBS_NUMBER |
|---|---|---|
| 10 | CLARK | 1 |
| 10 | KING | 2 |
| 10 | MILLER | 3 |
| 20 | ADAMS | 1 |
| 20 | FORD | 2 |
| 20 | JONES | 3 |
| 20 | SCOTT | 4 |
| 20 | SMITH | 5 |
| 30 | ALLEN | 1 |
| 30 | BLAKE | 2 |
| 30 | JAMES | 3 |
| 30 | MARTIN | 4 |
| 30 | TURNER | 5 |
| 30 | WARD | 6 |
Leave a comment