사원 데이터에서 급여가 높은 순서를 구하는 아래 SQL 문장의 ㉠ 안에 들어갈 함수명을 작성하시오.
------------- 아 래 -----------------
SELECT JOB, ENAME, SAL,
㉠ ( ) OVER (ORDER BY SAL DESC) QQ1
FROM EMP
[EMP]
JOB |
ENAME |
SAL |
QQ1 |
PRESIDENT |
KING |
5000 |
1 |
ANALYST |
FORD |
3000 |
2 |
ANALYST |
SCOTT |
3000 |
2 |
MANAGER |
JONES |
2975 |
4 |
MANAGER |
BLAKE |
2850 |
5 |
MANAGER |
CLARK |
2450 |
6 |
SALESMAN |
ALLEN |
1600 |
7 |
SALESMAN |
TURNER |
1500 |
8 |
CLERK |
MILLER |
1300 |
9 |
SALESMAN |
WARD |
1250 |
10 |
SALESMAN |
MARTIN |
1250 |
10 |
CLERK |
ADAMS |
1100 |
12 |
CLERK |
JAMES |
950 |
13 |
CLERK |
SMITH |
800 |
14 |
[출처] http://www.dbguide.net/da.db?cmd=snb13_view&boardGroupUid=6&boardConfigUid=81&boardUid=152370
* 정답 및 해설 *
정답 :RANK
RANK 함수는 ORDER BY를 포함한 QUERY 문에서 특정 항목(칼럼)에 대한 순위를 구하는 함수이다. 이때 특정 범위(PARTITION) 내에서 순위를 구할 수도 있고 전체 데이터에 대한 순위를 구할 수도 있다. 또한 동일한 값에 대해서는 동일한 순위를 부여하게 된다.
[출처] http://www.dbguide.net/da.db?cmd=snb13_view&boardGroupUid=6&boardConfigUid=81&boardUid=152453
세 가지 그룹 내 순위함수 비교
1. RANK()
SELECT JOB, ENAME, SAL, RANK( ) OVER (ORDER BY SAL DESC) QQ1
FROM EMP;
2. DENSE_RANK()
SELECT JOB, ENAME, SAL, DENSE_RANK( ) OVER (ORDER BY SAL DESC) QQ1
FROM EMP;
3. ROW_NUMBER()
SELECT JOB, ENAME, SAL, ROW_NUMBER( ) OVER (ORDER BY SAL DESC) QQ1
FROM EMP;