[SQL] 043. 데이터 분석 함수로 등급 출력하기
Updated:
초보자를 위한 SQL 200제 교재를 토대로 공부한 내용입니다.
오라클 SQL을 기반으로 합니다.
실습에 사용한 테이블은 정보문화사 홈페이지에서 받을 수 있습니다.
[예시]
NTILE() OVER
로 데이터의 등급을 출력 가능하다.
OVER
다음에 등급을 매길 열과 정렬 기준을 입력한다.
여기선 SAL(월급)이 높은 순으로 1등급(0~20%), 2등급(20~40%) 등으로 5등급으로 나눠 출력한다.
-- NTILE(나눌등급수) OVER (ORDER BY 기준)
SELECT ENAME, JOB, SAL,
NTILE(5) OVER (ORDER BY SAL DESC) AS 등급
FROM EMP;
[결과]
ENAME | JOB | SAL | 등급 |
---|---|---|---|
KING | PRESIDENT | 5000 | 1 |
SCOTT | ANALYST | 3000 | 1 |
FORD | ANALYST | 3000 | 1 |
JONES | MANAGER | 2975 | 2 |
BLAKE | MANAGER | 2850 | 2 |
CLARK | MANAGER | 2450 | 2 |
ALLEN | SALESMAN | 1600 | 3 |
TURNER | SALESMAN | 1500 | 3 |
MILLER | CLERK | 1300 | 3 |
WARD | SALESMAN | 1250 | 4 |
MARTIN | SALESMAN | 1250 | 4 |
ADAMS | CLERK | 1100 | 4 |
JAMES | CLERK | 950 | 5 |
SMITH | CLERK | 800 | 5 |
[예시2]
NULLS LAST
는 NULL 값이 마지막에 출력되게 한다.
해당 함수를 사용 하지 않으면 NULL이 먼저 출력된다.
등급 자체는 NULL이 있어도 나누게 된다.
-- NULL 값이 있는 경우
-- NULLS LAST: NULL값을 마지막으로 출력
SELECT ENAME, JOB, COMM,
NTILE(5) OVER (ORDER BY COMM DESC NULLS LAST) AS 등급
FROM EMP;
[결과2]
ENAME | JOB | COMM | 등급 |
---|---|---|---|
MARTIN | SALESMAN | 1400 | 1 |
WARD | SALESMAN | 500 | 1 |
ALLEN | SALESMAN | 300 | 1 |
TURNER | SALESMAN | 0 | 2 |
CLARK | MANAGER | 2 | |
BLAKE | MANAGER | 2 | |
MILLER | CLERK | 3 | |
JAMES | CLERK | 3 | |
JONES | MANAGER | 3 | |
FORD | ANALYST | 4 | |
SMITH | CLERK | 4 | |
SCOTT | ANALYST | 4 | |
ADAMS | CLERK | 5 | |
KING | PRESIDENT | 5 |
Leave a comment