일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- vue
- SQLP
- 리버스 프록시 예제
- vue.js
- MSSQL 문자열
- Tomcat Error
- .NET Core Proxy
- Vue3 configureWebpack
- Nginx Reverse Proxy
- vue3
- tomcat
- 웹 자동화
- Visual Studio 패키지에 실패했습니다.
- Visual Studio 재설치
- 업무 자동화
- Visual Studio 2015 삭제
- Vue configureWebpack
- Selenium 환경
- spring
- Vue.config
- Visual Studio 2015 설치
- Visual Studio 2015 강제 삭제
- MSSQL 동적 쿼리
- .NET Core
- 디자인 패턴 사례
- javascript
- Visual Studio 강제 삭제
- Selenium 설치
- 프록시 예제
- 웹 크롤링
- Today
- Total
금백조의 개발 블로그
[Oracle]NTILE 함수 사용법 및 예제 본문
서론
요즘 SQLP 시험 준비를 위해 익숙하지 않은 Oracle 함수에 대해 정리하고 있습니다. 오늘은 Oracle의 NTITLE 함수에 대해 작성해보려 합니다.
본론
[정의]
행 데이터를 그룹별로 나누어 차례대로 행 번호를 부여하는 분석 함수입니다.
[구문 형식]
SELECT NTILE([그룹으로 나눌 정수]) OVER (PARTITION BY [컬럼1] ORDER BY [컬럼2])
[특징]
1.전체 행 데이터 수를 그룹으로 나누었을 때 나머지가 존재하면 첫 번째 그룹부터 나머지가 안남을 때까지 1씩 부여합니다.
(예 : 전체행이 12개고 그룹이 5일 때 12를 5로 나눈 나머지가 2이므로 1~5번 그룹에 2행을 부여하고 1,2번 그룹에 1행씩 추가 부여합니다.)
2.PARTITION BY를 생략하면 전체 행에 대해서 그룹화가 수행됩니다. 반대로 PARTITION BY를 지정하면 해당 파티션 내에서 그룹화를 진행하여 행 번호를 부여합니다.
예제 (Oracle scott 계정 데이터 기준)
[예제 1]
select empno, ename, sal, NTILE(5) over (order by sal desc) as X
from emp;
[결과]
[설명]
총 12행이므로 12를 5로 나눈 나머지가 2입니다. 따라서 그룹 1과 그룹 2에 1행씩 추가로 부여하여 그룹 1,2는 3행, 그룹 3,4,5는 2행으로 나누어지고 그룹 순서대로 행 번호가 부여됩니다.
[예제 2]
select empno, ename, deptno, sal, NTILE(2) over (partition by deptno order by sal desc) as X
from emp;
[결과]
[설명]
부서(deptno) 별로 파티션이 먼저 나누어집니다.(파티션 1 : deptno = 10, 파티션 2 : deptno = 20, 파티션 3 : deptno = 30) 그리고 파티션 내에서 2개의 그룹으로 나눕니다. 파티션 1, 파티션 2는 행수가 각각 3개이므로 그룹 1에 1행씩 추가로 부여하여 그룹별 행 번호가 부여됩니다. 파티션3은 총 6행이므로 그룹1, 그룹2 행이 각각 3개씩 나누어져 그룹별 행번호가 부여합니다.
[결론]
NTILE 함수를 잘만 활용하면 데이터를 등급별로 나누는 등 활용할 수 있는 방법이 많을 것 같습니다. 저도 필요시 적극적으로 활용해봐야겠습니다.
Reference
[오라클 함수] NTILE 함수
https://statwith.tistory.com/793
'Database > Oracle' 카테고리의 다른 글
[Oracle]계층형 쿼리 사용법(START WITH, CONNECT BY PRIOR, ORDER SIBLINGS BY) (0) | 2021.08.22 |
---|---|
[Oracle]실행계획 해석_인덱스 관련 (0) | 2021.06.27 |
[Oracle]SIGN 함수 사용법 및 예제 (0) | 2021.05.16 |
[Oracle]TRUNC 함수 사용법 및 예제 (0) | 2021.05.16 |
[Oracle]SQL PLUS에서 결과 테이블 열 늘리기(Run SQL Command Line) (0) | 2021.05.07 |