[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